Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package open-isns for openSUSE:Factory checked in at 2022-09-10 20:16:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/open-isns (Old) and /work/SRC/openSUSE:Factory/.open-isns.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "open-isns" Sat Sep 10 20:16:47 2022 rev:17 rq:1002212 version:0.102 Changes: -------- --- /work/SRC/openSUSE:Factory/open-isns/open-isns.changes 2021-02-04 20:23:28.094770909 +0100 +++ /work/SRC/openSUSE:Factory/.open-isns.new.2083/open-isns.changes 2022-09-10 20:16:49.580757234 +0200 @@ -1,0 +2,37 @@ +Thu Sep 08 18:40:34 UTC 2022 - ldun...@suse.com + +- Update to version 0.102: + * Preparing for version v0.102 + * meson: just specify subdir for header-file install. + * build: only specify version in one place + * Fix two compiler warnings in slp.c + * meson: update README + * meson: small option usage cleanup + * meson: several updates based on review + * meson: fix error building shared lib with version + * meson: convert some args to 'features' + * meson: update README with meson info + * Add a decprecation warning to configure script. + * meson: Add ability to disable static library build + * meson builds now working + * git: ignore all shared library files + * build: Remove these two files, no longer used + * Add a package config file for libisns.a + * isnsd: socket: Make sure to create IPv6 socket default + * isnsadm: Fix unparse command line options "-V" and "-r" + * Typo: s/overried/override/ + * Removed bash-specific function definitions. + + Also, added patch to quiet compiler (soon upstream): + * Quiet-a-commpiler-warning.patch + + This changes the SPEC file to use the new meson build system, + supported in open-isns starting with version 0.102, instead of + autoconf/make. + + Changes in the code: + * no longer deliver isnsetup script or man page (development only) + * now deliver a package config file for the library + * now deliver both the static library and a shared library + +------------------------------------------------------------------- Old: ---- open-isns-0.101.tar.xz New: ---- Quiet-a-commpiler-warning.patch open-isns-0.102.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ open-isns.spec ++++++ --- /var/tmp/diff_new_pack.sCVKUY/_old 2022-09-10 20:16:50.024758376 +0200 +++ /var/tmp/diff_new_pack.sCVKUY/_new 2022-09-10 20:16:50.028758386 +0200 @@ -1,7 +1,7 @@ # # spec file for package open-isns # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,15 +20,18 @@ Summary: Partial Implementation of iSNS iSCSI registration License: LGPL-2.1-or-later Group: System/Kernel -Version: 0.101 +Version: 0.102 Release: 0 Source: %{name}-%{version}.tar.xz +Patch1: Quiet-a-commpiler-warning.patch URL: https://github.com/open-iscsi/%{name} BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf BuildRequires: automake BuildRequires: glibc-devel BuildRequires: make +BuildRequires: meson >= 0.55.0 +BuildRequires: openslp-devel BuildRequires: openssl-devel BuildRequires: systemd-rpm-macros %{?systemd_requires} @@ -46,38 +49,33 @@ initiators can be configured to discover the targets by asking the iSNS server. -%package -n open-isns-devel +%package devel Summary: Development files for open-isns Group: Development/Libraries/C and C++ -Requires: open-isns = %{version} +Requires: %{name} = %{version} -%description -n open-isns-devel +%description devel Files to develop an application using the open-isns library. %prep -%setup -n %{name}-%{version} +%autosetup -p1 %build %global _lto_cflags %{?_lto_cflags} -ffat-lto-objects -autoconf -autoheader -%configure --prefix=%{_prefix} --with-security -make OPTFLAGS="%{optflags}" +%meson --default-library=both +%meson_build %install -make DESTDIR="%{buildroot}" install -if [ ! -d "%{buildroot}/usr/sbin" ] ; then - mkdir -p %{buildroot}/usr/sbin -fi +%meson_install ln -sf /usr/sbin/service %{buildroot}/usr/sbin/rcisnsd -make DESTDIR="%{buildroot}" install_hdrs install_lib -install -m 755 isnssetup %{buildroot}%{_sbindir} %post +%{run_ldconfig} %{service_add_post isnsd.socket isnsd.service} %postun %{service_del_postun isnsd.socket isnsd.service} +%{run_ldconfig} %pre %{service_add_pre isnsd.socket isnsd.service} @@ -85,12 +83,14 @@ %preun %{service_del_preun isnsd.socket isnsd.service} +%post devel -p %{run_ldconfig} +%postun devel -p %{run_ldconfig} + %files %defattr(-,root,root) %{_sbindir}/isnsd %{_sbindir}/isnsadm %{_sbindir}/isnsdd -%{_sbindir}/isnssetup %dir %{_sysconfdir}/isns %attr(0600,root,root) %config(noreplace) %{_sysconfdir}/isns/isnsd.conf %attr(0600,root,root) %config(noreplace) %{_sysconfdir}/isns/isnsadm.conf @@ -101,12 +101,12 @@ %doc %{_mandir}/man8/isnsd.8%{?ext_man} %doc %{_mandir}/man8/isnsadm.8%{?ext_man} %doc %{_mandir}/man8/isnsdd.8%{?ext_man} -%doc %{_mandir}/man8/isnssetup.8%{?ext_man} %doc %{_mandir}/man5/isns_config.5%{?ext_man} %{_unitdir}/isnsd.service %{_unitdir}/isnsd.socket +%{_libdir}/libisns.so.0 -%files -n open-isns-devel +%files devel %defattr(-,root,root) %dir %{_includedir}/libisns %{_includedir}/libisns/attrs.h @@ -119,5 +119,7 @@ %{_includedir}/libisns/types.h %{_includedir}/libisns/util.h %{_libdir}/libisns.a +%{_libdir}/libisns.so +%{_libdir}/pkgconfig/libisns.pc %changelog ++++++ Quiet-a-commpiler-warning.patch ++++++ >From 62e2c4d8dd270eea0bfaa933e87182c8a1c18aac Mon Sep 17 00:00:00 2001 From: Lee Duncan <ldun...@suse.com> Date: Thu, 8 Sep 2022 12:00:31 -0700 Subject: [PATCH] Quiet a commpiler warning. Build error looked like: [ 33s] gcc -Wall -Wextra -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -ffat-lto-objects -g -I. -Iinclude -I. -I./include -flto=auto -ffat-lto-objects -o tests/pauw4 tests/pauw4.o -L. -lisns -Wl,--as-needed -lcrypto [ 33s] attrs.c: In function 'isns_attr_decode': [ 33s] attrs.c:807:9: warning: 'len' may be used uninitialized [-Wmaybe-uninitialized] [ 33s] 807 | isns_error("Error decoding attribute, tag=0x%04x, len=%u\n", [ 33s] | ^ [ 33s] attrs.c:780:30: note: 'len' declared here [ 33s] 780 | uint32_t tag, len; --- attrs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/attrs.c b/attrs.c index 44d9675358b9..a12c22235481 100644 --- a/attrs.c +++ b/attrs.c @@ -777,7 +777,7 @@ isns_attr_decode(buf_t *bp, isns_attr_t **result) { isns_attr_t *attr = NULL; isns_value_t *value; - uint32_t tag, len; + uint32_t tag, len = 0; if (!buf_get32(bp, &tag) || !buf_get32(bp, &len)) -- 2.35.3 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.sCVKUY/_old 2022-09-10 20:16:50.064758479 +0200 +++ /var/tmp/diff_new_pack.sCVKUY/_new 2022-09-10 20:16:50.068758490 +0200 @@ -4,8 +4,8 @@ <param name="url">https://github.com/open-iscsi/open-isns.git</param> <param name="subdir"></param> <param name="filename">open-isns</param> - <param name="versionformat">0.101</param> - <param name="revision">v0.101</param> + <param name="versionformat">0.102</param> + <param name="revision">v0.102</param> <param name="changesgenerate">enable</param> </service> <service name="recompress" mode="disabled"> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.sCVKUY/_old 2022-09-10 20:16:50.092758551 +0200 +++ /var/tmp/diff_new_pack.sCVKUY/_new 2022-09-10 20:16:50.096758562 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/open-iscsi/open-isns.git</param> - <param name="changesrevision">0d86dc31fae2e2d77a082ccea5aba95426b40c3c</param></service></servicedata> + <param name="changesrevision">c0e6d9fedc5a7041260de477fe1a8455fa074113</param></service></servicedata> (No newline at EOF) ++++++ open-isns-0.101.tar.xz -> open-isns-0.102.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/.gitignore new/open-isns-0.102/.gitignore --- old/open-isns-0.101/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/.gitignore 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,14 @@ +*.o +TAGS +tags +cscope.files +isnsadm +isnsd +isnsdd +libisns.a +libisns*.so* +Makefile +config.h +config.log +config.status +autom4te.cache diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/ChangeLog new/open-isns-0.102/ChangeLog --- old/open-isns-0.101/ChangeLog 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/ChangeLog 2022-09-08 20:09:47.000000000 +0200 @@ -1,3 +1,33 @@ +* Changes v0.101 to v0.102: + +Andrew Sayers (1): + Typo: s/overried/override/ + +Lee Duncan (15): + Add a package config file for libisns.a + build: Remove these two files, no longer used + git: ignore all shared library files + meson builds now working + meson: Add ability to disable static library build + Add a decprecation warning to configure script. + meson: update README with meson info + meson: convert some args to 'features' + meson: fix error building shared lib with version + meson: several updates based on review + meson: small option usage cleanup + meson: update README + Fix two compiler warnings in slp.c + build: only specify version in one place + meson: just specify subdir for header-file install. + +Pavel I Volkov (1): + Removed bash-specific function definitions. + +Wenchao Hao (2): + isnsadm: Fix unparse command line options "-V" and "-r" + isnsd: socket: Make sure to create IPv6 socket default + + * Changes v0.100 to v0.101: Dmitry Bogdanov (1): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/Makefile.in new/open-isns-0.102/Makefile.in --- old/open-isns-0.101/Makefile.in 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/Makefile.in 2022-09-08 20:09:47.000000000 +0200 @@ -18,6 +18,7 @@ SYSTEMDDIR = $(DESTDIR)$(systemddir) LIBDIR = $(DESTDIR)$(libdir) INCDIR = $(DESTDIR)$(includedir)/libisns +PKGDIR = $(LIBDIR)/pkgconfig ENABLE_SHARED = @ENABLE_SHARED@ ENABLE_STATIC = @ENABLE_STATIC@ @@ -107,9 +108,9 @@ all: $(LIB) $(SOLIB) isnsd isnsadm isnsdd $(TESTS) -install: +install: all @echo "*** Installing Open-iSNS ***" - $(INSTALL) -m 755 -d $(CFGDIR) $(MANDIR)/man8 $(MANDIR)/man5 $(SBINDIR) $(SYSTEMDDIR) + $(INSTALL) -m 755 -d $(CFGDIR) $(MANDIR)/man8 $(MANDIR)/man5 $(SBINDIR) $(SYSTEMDDIR) $(PKGDIR) $(INSTALL) -m 700 -d $(VARDIR) $(INSTALL) -m 555 isnsd isnsadm isnsdd $(SBINDIR) $(INSTALL) -m 644 $(srcdir)/etc/isnsd.conf $(CFGDIR) @@ -122,6 +123,7 @@ $(INSTALL) -m 644 $(srcdir)/doc/isns_config.5 $(MANDIR)/man5 $(INSTALL) -m 644 $(srcdir)/isnsd.service $(SYSTEMDDIR) $(INSTALL) -m 644 $(srcdir)/isnsd.socket $(SYSTEMDDIR) + $(INSTALL) -m 644 $(srcdir)/libisns.pc $(PKGDIR) install_hdrs: @echo '*** Installing Open-iSNS header files ***' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/README new/open-isns-0.102/README --- old/open-isns-0.101/README 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/README 2022-09-08 20:09:47.000000000 +0200 @@ -6,25 +6,25 @@ The implementation is still somewhat incomplete, but I'm releasing it for your reading pleasure. -The distribution comprises +The distribution comprises: isnsd - This is the iSNS server, supporting persistent storage - of registrations in a file based database. + This is the iSNS server, supporting persistent storage + of registrations in a file based database. isnsadm - A command line utility for querying the iSNS database, - and for registering/deregistering nodes and portals + A command line utility for querying the iSNS database, + and for registering/deregistering nodes and portals isnsdd - An iSNS Discovery Daemon, which is still very much work - in progress. The daemon is supposed to handle all the - bit banging and server communications required to register - a node, its portals, and to maintain the registration. - It is also supposed to use the iSNS State Change Notification - framework to learn of new targets or initiators coming online, - and inform local services (such as the iSCSI initiator daemon) - about these changes. + An iSNS Discovery Daemon, which is still very much work + in progress. The daemon is supposed to handle all the + bit banging and server communications required to register + a node, its portals, and to maintain the registration. + It is also supposed to use the iSNS State Change Notification + framework to learn of new targets or initiators coming online, + and inform local services (such as the iSCSI initiator daemon) + about these changes. Thanks! ------- @@ -36,88 +36,140 @@ What works, after a fashion: ---------------------------- - - For now, I've been focusing on getting the iSCSI part to - work. There is some very basic support for FC objects, but - this will be hardly useful yet. - - - Registration, deregistration, query, getnext - You can use isnsadm to register iSCSI nodes, and portals. - isnsadm also illustrates how this is supposed to be used from - the client perspective. - - - Discovery domains are supported mostly. The administrator - can create discovery domains using isnsadm, and place storage - nodes in domains. Queries by clients are scoped by their - discovery domains membership, so that they will be unable to - see nodes not part of a shared DD. - - Open-iSNS currently does not allow clients to place themselves - in a DD. - - Optionally, storage nodes that are not in any discovery domain - will be placed in a "default DD" (see the DefaultDiscoveryDomain - in isnsd.conf). + - For now, I've been focusing on getting the iSCSI part to + work. There is some very basic support for FC objects, but + this will be hardly useful yet. + + - Registration, deregistration, query, getnext + You can use isnsadm to register iSCSI nodes, and portals. + isnsadm also illustrates how this is supposed to be used from + the client perspective. + + - Discovery domains are supported mostly. The administrator + can create discovery domains using isnsadm, and place storage + nodes in domains. Queries by clients are scoped by their + discovery domains membership, so that they will be unable to + see nodes not part of a shared DD. + + Open-iSNS currently does not allow clients to place themselves + in a DD. + + Optionally, storage nodes that are not in any discovery domain + will be placed in a "default DD" (see the DefaultDiscoveryDomain + in isnsd.conf). - - ESI, supported both by the server and the discovery daemon + - ESI, supported both by the server and the discovery daemon - - SCN, supported by the server and the discovery daemon + - SCN, supported by the server and the discovery daemon What is still missing --------------------- - - Better documentation (esp. a HOWTO on getting started with iSNS) - - DD Sets - - Various bits and pieces of the protocol - - FC support + - Better documentation (esp. a HOWTO on getting started with iSNS) + - DD Sets + - Various bits and pieces of the protocol + - FC support Building Open-iSNS ------------------ -The Open-iSNS build is now based on autoconf. The distributed tarball -should include a configure script and a config.h.in file generated -from configure.ac. If these are missing, you can generate them -by running - - autoconf - autoheader - -For most people, it should be sufficient to run configure without any -arguments, or at most with the option --prefix. If run without --prefix, -program files, manpages etc will be installed below /usr/local. To have -everything installed /usr/bin, /usr/share/man etc, run it as +Currently we are transitioning to using 'meson' instead of +autotools/autoconf. This means that, for now, both systems +work. But autoconf will be deprecated, so please start using +meson. + + Using meson to Build open-isns + ------------------------------ + For Open-iSNS, the system is built using meson and ninja + (see https://github.com/mesonbuild/meson). If these packages aren't + available to you on your Linux distribution, you can download + the latest release from: https://github.com/mesonbuild/meson/releases. + The README.md file there describes in detail how to build it yourself, + including how to get ninja. + + To build the open-isns, first run meson to configure the build, + from the top-level open-iscsi directory, e.g.: + + rm -rf builddir + mkdir builddir + meson [<OPTIONS>] setup builddir + + Meson has many options, some built in, and some specifically for + this project. To see the built-in options, run: + + meson setup --help + + One option of note is "--default-library={shared,static,both}". The + meson default is "shared". + + The project-specific options are set using -D<OPTION>=VALUE. OPTIONS + are from. You can use 'meson configure' to see these project options: + + security feature [check] use libcrypt for security + slp feature [check] use Service Location Protocol + shared_version boolean [true] use library versioning, if + building a shared library + systemddir string [/usr/lib/systemd] location of systemd files + rundir string [/var/run] where socket and pidfile go + + Thus, one might run: + + meson setup --default-library=both -Dsecurity=disabled -Drundir=/some/dir + + Once meson has created and set up your "builddir" directory, you can + actually build the code using ninja: + + ninja -C builddir [--verbose] + + Using autotools/make to Build open-isns [DEPRECATED] + ---------------------------------------------------- + The Open-iSNS can still be build using autoconf, though this + method is deprected and will be removed soon. The distributed tarball + should include a configure script and a config.h.in file generated + from configure.ac. If these are missing, you can generate them + by running + + autoconf + autoheader + + For most people, it should be sufficient to run configure without any + arguments, or at most with the option --prefix. If run without --prefix, + program files, manpages etc will be installed below /usr/local. To have + everything installed /usr/bin, /usr/share/man etc, run it as + + ./configure --prefix=/usr + + Other project-specific options to configure include: + + --without-security to disable security + --without-slp to disable Service Location Protocol + --with-rundir=/path to set the run directory [/var/run] + --enable-shared enabled building shared library + --disable-static disable building the static library + --enable-memdebug defined -DMEMDEBUG when compiling (deprecated) + + When configure is run, it checks for the presence of a number of + headers and libraries in your system (the results of most of these checks + are currently ignored). Then, it creates a Makefile and a config.h + include file. With these in place, you can build the binaries and libraries: - ./configure --prefix=/usr + make + make install -Dependencies: + Then, run "make clean" to clean up your binaries, or run "make distclean" + to get back to a clean pre-configuration state. - - If you want to build Open-iSNS with support for authentication, - you need the OpenSSL libraries and header files installed. +Dependencies: - The configure script should pick up the presence of these - libraries, and enable security support automatically. To disable - this explicitly in your build, pass the --without-security option - to configure. - - - If you want to build Open-iSNS with SLP support, you need the - OpenSLP library and header file installed. - - The configure script should pick up the presence of this library, - and enable SLP support automatically. To disable this explicitly - in your build, pass the --without-slp option to configure. - -When configure is run, it checks for a the presence of a number of -headers and libraries in your system (the results of most of these checks -are currently ignored :-). Then, it creates a Makefile and a config.h -include file. With these in place, you can build the binaries and libraries: + - If you want to build Open-iSNS with support for authentication, + you need the OpenSSL libraries and header files installed. - make - make install + - If you want to build Open-iSNS with SLP support, you need the + OpenSLP library and header file installed. -Then, run "make clean" to clean up your binaries, or run "make distclean" -to get back to a clean pre-configuration state. Testing @@ -133,12 +185,13 @@ simplest way is probably to use the isnssetup script included in the source package. -For each client you wish to use, you should then +For each client you wish to use, you should then register that key using +the example setup script, or steps similar to those in the script. iSNS Security ------------- -This implementation of iSNS supports authentication, as descibed in RFC +This implementation of iSNS supports authentication, as described in RFC 4171. In order to use it, you have to create DSA keys for the server and all clients. @@ -158,11 +211,11 @@ Open-iSNS is available for download from: - https://github.com/gonzoleeman/open-isns/archive/$(VERSION).tar.gz + https://github.com/open-iscsi/open-isns/archive/$(VERSION).tar.gz -or, in souce form, from: +or, in source form, from: - g...@github.com:gonzoleeman/open-isns.git + https://github.com/open-iscsi/open-isns You have to grab the latest tarball and compile it; fancy things such as RPMs are not available yet. @@ -170,32 +223,32 @@ ------------------------------------------------------------------ - COPYRIGHT NOTICE + COPYRIGHT NOTICE - Copyright (C) 2007 Olaf Kirch. + Copyright (C) 2007 Olaf Kirch. - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. ------------------------------------------------------------------ Author: - Olaf Kirch <o...@suse.com> + Olaf Kirch <o...@suse.com> Current maintainer: - Lee Duncan <ldun...@suse.com> 2015 + Lee Duncan <ldun...@suse.com> (since 2015) ------------------------------------------------------------------ @@ -203,6 +256,7 @@ * fully implement/require device discovery sets * implement ability to pass in flags to systemd service file for isnsd -* improve automated testing (using PyUnit?) * ensure all tests pass (!!) -* document testing procedure +* document testing procedure better +* remove the old perl-based tests +* fix testing using meson diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/compat/my_getopt.c new/open-isns-0.102/compat/my_getopt.c --- old/open-isns-0.101/compat/my_getopt.c 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/compat/my_getopt.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,271 +0,0 @@ -/* - * my_getopt.c - my re-implementation of getopt. - * Copyright 1997, 2000, 2001, 2002, Benjamin Sittler - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include <sys/types.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include "my_getopt.h" - -int my_optind=1, my_opterr=1, my_optopt=0; -char *my_optarg=0; - -/* this is the plain old UNIX getopt, with GNU-style extensions. */ -/* if you're porting some piece of UNIX software, this is all you need. */ -/* this supports GNU-style permution and optional arguments */ - -int my_getopt(int argc, char * argv[], const char *opts) -{ - static int charind=0; - const char *s; - char mode, colon_mode; - int off = 0, opt = -1; - - if(getenv("POSIXLY_CORRECT")) colon_mode = mode = '+'; - else { - if((colon_mode = *opts) == ':') off ++; - if(((mode = opts[off]) == '+') || (mode == '-')) { - off++; - if((colon_mode != ':') && ((colon_mode = opts[off]) == ':')) - off ++; - } - } - my_optarg = 0; - if(charind) { - my_optopt = argv[my_optind][charind]; - for(s=opts+off; *s; s++) if(my_optopt == *s) { - charind++; - if((*(++s) == ':') || ((my_optopt == 'W') && (*s == ';'))) { - if(argv[my_optind][charind]) { - my_optarg = &(argv[my_optind++][charind]); - charind = 0; - } else if(*(++s) != ':') { - charind = 0; - if(++my_optind >= argc) { - if(my_opterr) fprintf(stderr, - "%s: option requires an argument -- %c\n", - argv[0], my_optopt); - opt = (colon_mode == ':') ? ':' : '?'; - goto my_getopt_ok; - } - my_optarg = argv[my_optind++]; - } - } - opt = my_optopt; - goto my_getopt_ok; - } - if(my_opterr) fprintf(stderr, - "%s: illegal option -- %c\n", - argv[0], my_optopt); - opt = '?'; - if(argv[my_optind][++charind] == '\0') { - my_optind++; - charind = 0; - } - my_getopt_ok: - if(charind && ! argv[my_optind][charind]) { - my_optind++; - charind = 0; - } - } else if((my_optind >= argc) || - ((argv[my_optind][0] == '-') && - (argv[my_optind][1] == '-') && - (argv[my_optind][2] == '\0'))) { - my_optind++; - opt = -1; - } else if((argv[my_optind][0] != '-') || - (argv[my_optind][1] == '\0')) { - char *tmp; - int i, j, k; - - if(mode == '+') opt = -1; - else if(mode == '-') { - my_optarg = argv[my_optind++]; - charind = 0; - opt = 1; - } else { - for(i=j=my_optind; i<argc; i++) if((argv[i][0] == '-') && - (argv[i][1] != '\0')) { - my_optind=i; - opt=my_getopt(argc, argv, opts); - while(i > j) { - tmp=argv[--i]; - for(k=i; k+1<my_optind; k++) argv[k]=argv[k+1]; - argv[--my_optind]=tmp; - } - break; - } - if(i == argc) opt = -1; - } - } else { - charind++; - opt = my_getopt(argc, argv, opts); - } - if (my_optind > argc) my_optind = argc; - return opt; -} - -/* this is the extended getopt_long{,_only}, with some GNU-like - * extensions. Implements _getopt_internal in case any programs - * expecting GNU libc getopt call it. - */ - -int _my_getopt_internal(int argc, char * argv[], const char *shortopts, - const struct option *longopts, int *longind, - int long_only) -{ - char mode, colon_mode = *shortopts; - int shortoff = 0, opt = -1; - - if(getenv("POSIXLY_CORRECT")) colon_mode = mode = '+'; - else { - if((colon_mode = *shortopts) == ':') shortoff ++; - if(((mode = shortopts[shortoff]) == '+') || (mode == '-')) { - shortoff++; - if((colon_mode != ':') && ((colon_mode = shortopts[shortoff]) == ':')) - shortoff ++; - } - } - my_optarg = 0; - if((my_optind >= argc) || - ((argv[my_optind][0] == '-') && - (argv[my_optind][1] == '-') && - (argv[my_optind][2] == '\0'))) { - my_optind++; - opt = -1; - } else if((argv[my_optind][0] != '-') || - (argv[my_optind][1] == '\0')) { - char *tmp; - int i, j, k; - - opt = -1; - if(mode == '+') return -1; - else if(mode == '-') { - my_optarg = argv[my_optind++]; - return 1; - } - for(i=j=my_optind; i<argc; i++) if((argv[i][0] == '-') && - (argv[i][1] != '\0')) { - my_optind=i; - opt=_my_getopt_internal(argc, argv, shortopts, - longopts, longind, - long_only); - while(i > j) { - tmp=argv[--i]; - for(k=i; k+1<my_optind; k++) - argv[k]=argv[k+1]; - argv[--my_optind]=tmp; - } - break; - } - } else if((!long_only) && (argv[my_optind][1] != '-')) - opt = my_getopt(argc, argv, shortopts); - else { - int charind, offset; - int found = 0, ind, hits = 0; - - if(((my_optopt = argv[my_optind][1]) != '-') && ! argv[my_optind][2]) { - int c; - - ind = shortoff; - while((c = shortopts[ind++])) { - if(((shortopts[ind] == ':') || - ((c == 'W') && (shortopts[ind] == ';'))) && - (shortopts[++ind] == ':')) - ind ++; - if(my_optopt == c) return my_getopt(argc, argv, shortopts); - } - } - offset = 2 - (argv[my_optind][1] != '-'); - for(charind = offset; - (argv[my_optind][charind] != '\0') && - (argv[my_optind][charind] != '='); - charind++); - for(ind = 0; longopts[ind].name && !hits; ind++) - if((strlen(longopts[ind].name) == (size_t) (charind - offset)) && - (strncmp(longopts[ind].name, - argv[my_optind] + offset, charind - offset) == 0)) - found = ind, hits++; - if(!hits) for(ind = 0; longopts[ind].name; ind++) - if(strncmp(longopts[ind].name, - argv[my_optind] + offset, charind - offset) == 0) - found = ind, hits++; - if(hits == 1) { - opt = 0; - - if(argv[my_optind][charind] == '=') { - if(longopts[found].has_arg == 0) { - opt = '?'; - if(my_opterr) fprintf(stderr, - "%s: option `--%s' doesn't allow an argument\n", - argv[0], longopts[found].name); - } else { - my_optarg = argv[my_optind] + ++charind; - charind = 0; - } - } else if(longopts[found].has_arg == 1) { - if(++my_optind >= argc) { - opt = (colon_mode == ':') ? ':' : '?'; - if(my_opterr) fprintf(stderr, - "%s: option `--%s' requires an argument\n", - argv[0], longopts[found].name); - } else my_optarg = argv[my_optind]; - } - if(!opt) { - if (longind) *longind = found; - if(!longopts[found].flag) opt = longopts[found].val; - else *(longopts[found].flag) = longopts[found].val; - } - my_optind++; - } else if(!hits) { - if(offset == 1) opt = my_getopt(argc, argv, shortopts); - else { - opt = '?'; - if(my_opterr) fprintf(stderr, - "%s: unrecognized option `%s'\n", - argv[0], argv[my_optind++]); - } - } else { - opt = '?'; - if(my_opterr) fprintf(stderr, - "%s: option `%s' is ambiguous\n", - argv[0], argv[my_optind++]); - } - } - if (my_optind > argc) my_optind = argc; - return opt; -} - -int my_getopt_long(int argc, char * argv[], const char *shortopts, - const struct option *longopts, int *longind) -{ - return _my_getopt_internal(argc, argv, shortopts, longopts, longind, 0); -} - -int my_getopt_long_only(int argc, char * argv[], const char *shortopts, - const struct option *longopts, int *longind) -{ - return _my_getopt_internal(argc, argv, shortopts, longopts, longind, 1); -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/compat/my_getopt.h new/open-isns-0.102/compat/my_getopt.h --- old/open-isns-0.101/compat/my_getopt.h 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/compat/my_getopt.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,69 +0,0 @@ -/* - * my_getopt.h - interface to my re-implementation of getopt. - * Copyright 1997, 2000, 2001, 2002, Benjamin Sittler - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#ifndef MY_GETOPT_H_INCLUDED -#define MY_GETOPT_H_INCLUDED - -#ifdef __cplusplus -extern "C" { -#endif - -/* UNIX-style short-argument parser */ -extern int my_getopt(int argc, char * argv[], const char *opts); - -extern int my_optind, my_opterr, my_optopt; -extern char *my_optarg; - -struct option { - const char *name; - int has_arg; - int *flag; - int val; -}; - -/* human-readable values for has_arg */ -#undef no_argument -#define no_argument 0 -#undef required_argument -#define required_argument 1 -#undef optional_argument -#define optional_argument 2 - -/* GNU-style long-argument parsers */ -extern int my_getopt_long(int argc, char * argv[], const char *shortopts, - const struct option *longopts, int *longind); - -extern int my_getopt_long_only(int argc, char * argv[], const char *shortopts, - const struct option *longopts, int *longind); - -extern int _my_getopt_internal(int argc, char * argv[], const char *shortopts, - const struct option *longopts, int *longind, - int long_only); - -#ifdef __cplusplus -} -#endif - -#endif /* MY_GETOPT_H_INCLUDED */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/configure new/open-isns-0.102/configure --- old/open-isns-0.101/configure 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/configure 2022-09-08 20:09:47.000000000 +0200 @@ -621,6 +621,7 @@ ac_subst_vars='LTLIBOBJS LIBOBJS +VERSION RUNDIR ENABLE_STATIC ENABLE_SHARED @@ -4472,6 +4473,8 @@ fi +VERSION=0.101 + @@ -5758,3 +5761,6 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Autotool/configure/make are deprecated, and will be removed soon. Please using \"meson\" instead" >&5 +$as_echo "$as_me: WARNING: Autotool/configure/make are deprecated, and will be removed soon. Please using \"meson\" instead" >&2;} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/configure.ac new/open-isns-0.102/configure.ac --- old/open-isns-0.101/configure.ac 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/configure.ac 2022-09-08 20:09:47.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT(open-isns, [0.101]) +AC_INIT(open-isns, [0.102]) AC_CONFIG_SRCDIR([isnsd.c]) AC_CONFIG_AUX_DIR([aclocal]) @@ -161,8 +161,13 @@ AC_SUBST(HAVE_LD_VERSION_SCRIPT) fi +VERSION=AC_PACKAGE_VERSION AC_SUBST(ENABLE_SHARED) AC_SUBST(ENABLE_STATIC) AC_SUBST(RUNDIR) +AC_SUBST(VERSION) AC_OUTPUT(Makefile include/libisns/paths.h) + +dnl Warn user that autoconf is deprecated here +AC_MSG_WARN([Autotool/configure/make are deprecated, and will be removed soon. Please using "meson" instead]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/doc/isns_config.5 new/open-isns-0.102/doc/isns_config.5 --- old/open-isns-0.101/doc/isns_config.5 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/doc/isns_config.5 2022-09-08 20:09:47.000000000 +0200 @@ -46,7 +46,7 @@ system call, and use a DNS lookup to look up the canonical name. Using the .BR HostName -option, you can overried this. This option is rarely needed. +option, you can override this. This option is rarely needed. .TP .BR SourceName This option is mandatory for all Open-iSNS applications. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/doc/meson.build new/open-isns-0.102/doc/meson.build --- old/open-isns-0.101/doc/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/doc/meson.build 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,10 @@ +# meson build file for open-isns doc (man pages) + +# do not install isnssetup.8, as it's a man page +# for aninternal script +man8_pages = files([ + 'isnsd.8', + 'isnsdd.8', + 'isnsadm.8']) +man5_pages = files([ + 'isns_config.5']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/etc/meson.build new/open-isns-0.102/etc/meson.build --- old/open-isns-0.101/etc/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/etc/meson.build 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,6 @@ +# meson build file for open-isns etc files + +config_files = files([ + 'isnsd.conf', + 'isnsdd.conf', + 'isnsadm.conf']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/include/libisns/.gitignore new/open-isns-0.102/include/libisns/.gitignore --- old/open-isns-0.101/include/libisns/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/include/libisns/.gitignore 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1 @@ +paths.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/include/libisns/meson.build new/open-isns-0.102/include/libisns/meson.build --- old/open-isns-0.101/include/libisns/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/include/libisns/meson.build 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,27 @@ +# meson build control file for open-isns public include files + +inc_conf = configuration_data() +inc_conf.set('RUNDIR', get_option('rundir')) +inc_conf.set('VERSION', meson.project_version()) + +static_hdr_files = files([ + 'attrs.h', + 'buffer.h', + 'isns.h', + 'isns-proto.h', + 'message.h', + 'source.h', + 'types.h', + 'util.h']) + +template_hdr_name = 'paths.h' +template_hdr_file = files('paths.h.in') + +configure_file( + input: template_hdr_file, + output: template_hdr_name, + configuration: inc_conf, + install: true, + install_dir: get_option('includedir') / 'libisns') + +install_headers(static_hdr_files, subdir: 'libisns') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/include/libisns/paths.h.in new/open-isns-0.102/include/libisns/paths.h.in --- old/open-isns-0.101/include/libisns/paths.h.in 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/include/libisns/paths.h.in 2022-09-08 20:09:47.000000000 +0200 @@ -10,7 +10,7 @@ #define __OPENISNS_MKVERSION(maj, min) (((maj) << 8) + (min)) #define OPENISNS_VERSION __OPENISNS_MKVERSION(0, 101); -#define OPENISNS_VERSION_STRING "0.101" +#define OPENISNS_VERSION_STRING "@VERSION@" #define ISNS_ETCDIR "/etc/isns" #define ISNS_RUNDIR "@RUNDIR@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/isnsadm.c new/open-isns-0.102/isnsadm.c --- old/open-isns-0.101/isnsadm.c 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/isnsadm.c 2022-09-08 20:09:47.000000000 +0200 @@ -97,7 +97,7 @@ isns_security_t *security = NULL; int c, status; - while ((c = getopt_long(argc, argv, "46Cc:d:hK:k:ls:", options, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "46Cc:d:hK:k:ls:Vr", options, NULL)) != -1) { switch (c) { case '4': opt_af = AF_INET; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/isnsd.c new/open-isns-0.102/isnsd.c --- old/open-isns-0.101/isnsd.c 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/isnsd.c 2022-09-08 20:09:47.000000000 +0200 @@ -29,7 +29,8 @@ }; static const char * opt_configfile = ISNS_DEFAULT_ISNSD_CONFIG; -static int opt_af = AF_UNSPEC; +static int opt_af = AF_INET6; // should be AF_INET6 as described in isnsd's manual + static int opt_mode = MODE_NORMAL; static int opt_foreground = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/libisns.pc new/open-isns-0.102/libisns.pc --- old/open-isns-0.101/libisns.pc 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/libisns.pc 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,8 @@ +includedir=/usr/include +libdir=/usr/lib64 + +Name: libisns +Version: 0.102 +Description: iSNS user space library +Libs: -L${libdir} -lisns +Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/meson.build new/open-isns-0.102/meson.build --- old/open-isns-0.101/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/meson.build 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,207 @@ +# meson build for open-isns + +project('libisns', 'c', + version: '0.102', + meson_version: '>= 0.54.0', + license: 'LGPL-2.1-or-later', + default_options: [ + 'c_std=gnu99', + 'warning_level=2', + 'buildtype=release', + 'libdir=/usr/lib64', + 'prefix=/usr'] + ) + +# we will need this below +cc = meson.get_compiler('c') + +# get feature options +security_dep = dependency('libcrypto', required: get_option('security')) +slp_dep = cc.find_library('slp', required: get_option('slp')) + +subdir('tests') +subdir('doc') +subdir('etc') +subdir('include/libisns') + +lib_srcs = files([ + 'server.c', + 'client.c', + 'objects.c', + 'callback.c', + 'timer.c', + 'vendor.c', + 'db.c', + 'db-file.c', + 'db-policy.c', + 'relation.c', + 'scope.c', + 'message.c', + 'security.c', + 'authblock.c', + 'policy.c', + 'pki.c', + 'register.c', + 'query.c', + 'getnext.c', + 'deregister.c', + 'esi.c', + 'scn.c', + 'dd.c', + 'entity.c', + 'portal-group.c', + 'storage-node.c', + 'domain.c', + 'simple.c', + 'tags.c', + 'attrs.c', + 'export.c', + 'socket.c', + 'slp.c', + 'error.c', + 'logging.c', + 'config.c', + 'parser.c', + 'buffer.c', + 'pidfile.c', + 'sysdep-unix.c', + 'util.c', + 'bitvector.c', + 'mdebug.c']) + +incl_dirs = include_directories(['.', 'include']) + +add_project_arguments( + ['-D_GNU_SOURCE'], + language: 'c') + +# +# build our config.h file +# + +conf = configuration_data() +conf.set('WITH_SECURITY', security_dep.found()) +conf.set('WITH_SLP', slp_dep.found()) +conf.set('HAVE_SLP_H', slp_dep.found()) + +config_h = configure_file( + output: 'config.h', + configuration: conf) + +config_incdir = include_directories('.') + +config_dep = declare_dependency( + include_directories: config_incdir, + sources: config_h) + +# +# build our library -- we always build either the static or +# the shared library, or both +# + +lib_deps = [config_dep, security_dep, slp_dep] + +shared_link_args = [] +if get_option('shared_version') + shared_link_args = '-Wl,--version-script=@0@/libisns.vers'.format(meson.current_source_dir()) +endif + +libisns_lib = library('isns', + lib_srcs, + include_directories: incl_dirs, + dependencies: lib_deps, + link_args: shared_link_args, + version: '0', + install: true) + +libisns_dep = declare_dependency(link_with: libisns_lib) + +# +# build binaries +# + +our_dependencies = [config_dep, security_dep, libisns_dep, slp_dep] + +sbin_dir = get_option('sbindir') + +executable('isnsd', + sources: files('isnsd.c'), + include_directories: incl_dirs, + dependencies: our_dependencies, + install: true, + install_dir: sbin_dir) + +executable('isnsdd', + sources: files(['isnsdd.c', 'local.c']), + include_directories: incl_dirs, + dependencies: our_dependencies, + install: true, + install_dir: sbin_dir) + +executable('isnsadm', + sources: files('isnsadm.c'), + include_directories: incl_dirs, + dependencies: our_dependencies, + install: true, + install_dir: sbin_dir) + +# a testing program (not installed, not currently used here) +e = executable('bitvector', + sources: files('bitvector.c'), + include_directories: incl_dirs, + dependencies: our_dependencies, + c_args: ['-DTEST']) +test('test bitvector', e) + +# build our test files ??? (FIXME: not working) +pyunit_test_works = false +if pyunit_test_works + test_progs = [] + foreach t: tests + e = executable(t, + sources: files('tests' / t + '.c'), + include_directories: incl_dirs, + dependencies: our_dependencies) + test_progs += e + endforeach +endif + +# +# man pages +# +install_man([man8_pages, man5_pages]) + +# +# config files +# +install_data(config_files, + install_dir: get_option('sysconfdir') / 'isns') + +# +# systemd service files +# +install_data(files(['isnsd.service', 'isnsd.socket']), + install_dir: get_option('systemddir') / 'system') + +# +# our package file +# +pkg_mod = import('pkgconfig') +pkg_mod.generate(libraries: libisns_lib, + version: '0', + name: 'libisns', + description: 'iSNS userspace library') + +# +# public header files are installed from # include/libisns +# + +# +# lastly, create our runtime directory (empty) +# +# NOTE: this can be replaced with install_emptydir() once +# the minimum requirement of Meson is bumped to >=0.60.0 + +install_subdir('isns', + install_dir: '/var/lib', + install_mode: 'r--------') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/meson_options.txt new/open-isns-0.102/meson_options.txt --- old/open-isns-0.101/meson_options.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/meson_options.txt 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,18 @@ +# meson options for open-isns + +# enabled security and service location protocol usage by default +option('security', type: 'feature', value: 'auto', + description: 'enable security using libcrypt') +option('slp', type: 'feature', value: 'auto', + description: 'enable use of Service Location Protocol') + +# disable shared library creation and enable static library +# creation, by default +option('shared_version', type: 'boolean', value: true, + description: 'use library versioning on the shared library') + +# set default locations for systemd and runtime files +option('systemddir', type: 'string', value: '/usr/lib/systemd', + description: 'override systemd directory "/usr/lib/systemd"') +option('rundir', type: 'string', value: '/var/run', + description: 'override runtime directory "/var/run"') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/slp.c new/open-isns-0.102/slp.c --- old/open-isns-0.101/slp.c 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/slp.c 2022-09-08 20:09:47.000000000 +0200 @@ -29,25 +29,26 @@ }; static void -isns_slp_report(SLPHandle handle, SLPError err, void *cookie) +isns_slp_report(__attribute__((unused))SLPHandle handle, + SLPError err, void *cookie) { *(SLPError *) cookie = err; } /* * Register a service with SLP - */ + */ int isns_slp_register(const char *url) { - SLPError err, callbackerr; - SLPHandle handle = NULL; + SLPError err, callbackerr; + SLPHandle handle = NULL; - err = SLPOpen("en", SLP_FALSE, &handle); - if(err != SLP_OK) { + err = SLPOpen("en", SLP_FALSE, &handle); + if(err != SLP_OK) { isns_error("Unable to obtain SLP handle (err %d)\n", err); return 0; - } + } err = SLPReg(handle, url, SLP_LIFETIME_MAXIMUM, ISNS_SLP_SCOPE, @@ -69,20 +70,20 @@ /* * DeRegister a service - */ + */ int isns_slp_unregister(const char *url) { - SLPError err, callbackerr; - SLPHandle handle = NULL; + SLPError err, callbackerr; + SLPHandle handle = NULL; isns_debug_general("SLP: Unregistering \"%s\"\n", url); - err = SLPOpen("en", SLP_FALSE, &handle); - if(err != SLP_OK) { + err = SLPOpen("en", SLP_FALSE, &handle); + if(err != SLP_OK) { isns_error("Unable to obtain SLP handle (err %d)\n", err); return 0; - } + } err = SLPDereg(handle, url, isns_slp_report, &callbackerr); @@ -102,9 +103,11 @@ * Find an iSNS server through SLP */ static SLPBoolean -isns_slp_url_callback(SLPHandle handle, - const char *url, unsigned short lifetime, - SLPError err, void *cookie) +isns_slp_url_callback(__attribute__((unused))SLPHandle handle, + const char *url, + __attribute__((unused))unsigned short lifetime, + SLPError err, + void *cookie) { struct isns_slp_url_state *sp = cookie; SLPSrvURL *parsed_url = NULL; @@ -159,19 +162,19 @@ isns_slp_find(void) { static struct isns_slp_url_state state; - SLPHandle handle = NULL; - SLPError err; + SLPHandle handle = NULL; + SLPError err; if (state.slp_url) return state.slp_url; isns_debug_general("Using SLP to locate iSNS server\n"); - err = SLPOpen("en", SLP_FALSE, &handle); - if(err != SLP_OK) { + err = SLPOpen("en", SLP_FALSE, &handle); + if(err != SLP_OK) { isns_error("Unable to obtain SLP handle (err %d)\n", err); return NULL; - } + } err = SLPFindSrvs(handle, ISNS_SLP_SERVICE_NAME, NULL, "(protocols=isns)", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/tests/.gitignore new/open-isns-0.102/tests/.gitignore --- old/open-isns-0.101/tests/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/tests/.gitignore 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,2 @@ +pauw[1-4] +*.pyc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/tests/genkey new/open-isns-0.102/tests/genkey --- old/open-isns-0.101/tests/genkey 2021-02-01 18:27:33.000000000 +0100 +++ new/open-isns-0.102/tests/genkey 2022-09-08 20:09:47.000000000 +0200 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # # This is a very simple script to generate a DSA # key pair for authenticated iSNS. @@ -25,7 +25,7 @@ opt_force=0 opt_server=0 -function usage { +usage() { cat <<-EOF >&2 $* Usage: @@ -35,7 +35,7 @@ exit 1 } -function make_isns_name { +make_isns_name() { OFS="$IFS" IFS=. set -- $* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/open-isns-0.101/tests/meson.build new/open-isns-0.102/tests/meson.build --- old/open-isns-0.101/tests/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/open-isns-0.102/tests/meson.build 2022-09-08 20:09:47.000000000 +0200 @@ -0,0 +1,5 @@ +# meson build control file for open-isns tests + +tests = ['pauw1', 'pauw2', 'pauw3', 'pauw4'] + +test_prog = find_program('test-isns.py')