* [IPFire-SCM] [git.ipfire.org] IPFire 3.x development tree branch, master, updated. 10165db27f1c1e4170b7985bc8fbf8179e910e62
@ 2012-01-07 20:14 git
0 siblings, 0 replies; only message in thread
From: git @ 2012-01-07 20:14 UTC (permalink / raw)
To: ipfire-scm
[-- Attachment #1: Type: text/plain, Size: 33907 bytes --]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 3.x development tree".
The branch, master has been updated
via 10165db27f1c1e4170b7985bc8fbf8179e910e62 (commit)
via 3561a2757c589b686a69a89c704907f685ece490 (commit)
via b1398028c2d44f70b54a06ff1fbf7726fcb39a39 (commit)
via 31eec2defbb9b5358d70d31f6d4bb1fb60cd9e85 (commit)
via b28e544dd3a0881786a36bd85bb7a7c94cc173a5 (commit)
via a22ca966a85505646ea196fefef6e8a51ca8542d (commit)
via ee42bf43502cb569e69c6f19d5d22fb947c29885 (commit)
via 0e51f14d9ddb21ed63093c68134c9e4ed905d5dd (commit)
via 997373fd908358cccd263a7816da60c20eb6c7dd (commit)
via 7072a3b0fef3aa28e590309a15d2d95ae84e588c (commit)
via 4023155684b9803bc95fdebfefc40fad4c2dbe2c (commit)
via b63861229ecdf572ed05269ab25b8c1c2ca454e9 (commit)
via 3f942a5206f1bb926a845563d84a1f71f06c0085 (commit)
via 641c402a3cd9d128f93660fdd873adec2eee83a4 (commit)
via 24bb6d49fa60ca272cb3848da8b8a59cb6408302 (commit)
via 4500fa51a68a4fa53438ce493ff4924932b40375 (commit)
via 78c574e7d217817cdd6cf8dd3bfc24bacc6cf0f4 (commit)
from 255276ceded76952ecf13741a9b8063f3197cb0b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 10165db27f1c1e4170b7985bc8fbf8179e910e62
Merge: 3561a27 255276c
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 21:13:54 2012 +0100
Merge branch 'master' of ssh://git.ipfire.org/pub/git/ipfire-3.x
commit 3561a2757c589b686a69a89c704907f685ece490
Merge: b139802 24bb6d4
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 21:13:15 2012 +0100
Merge remote-tracking branch 'stevee/libtiff'
Conflicts:
libtiff/libtiff.nm
commit b1398028c2d44f70b54a06ff1fbf7726fcb39a39
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 17:30:51 2012 +0100
lighttpd: Make package work on x86_64.
commit 31eec2defbb9b5358d70d31f6d4bb1fb60cd9e85
Merge: b28e544 4500fa5
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 16:58:04 2012 +0100
Merge remote-tracking branch 'stevee/lighttpd'
commit b28e544dd3a0881786a36bd85bb7a7c94cc173a5
Merge: a22ca96 72da3f6
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 16:57:46 2012 +0100
Merge branch 'master' of ssh://git.ipfire.org/pub/git/ipfire-3.x
Conflicts:
dbus/dbus.nm
openldap/openldap.nm
commit a22ca966a85505646ea196fefef6e8a51ca8542d
Merge: ee42bf4 997373f
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 16:55:43 2012 +0100
Merge remote-tracking branch 'stevee/gettext'
commit ee42bf43502cb569e69c6f19d5d22fb947c29885
Merge: 0e51f14 641c402
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 13:23:10 2012 +0100
Merge remote-tracking branch 'stevee/openldap'
commit 0e51f14d9ddb21ed63093c68134c9e4ed905d5dd
Merge: 7072a3b b638612
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 12:28:20 2012 +0100
Merge remote-tracking branch 'stevee/dbus'
commit 997373fd908358cccd263a7816da60c20eb6c7dd
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Sat Jan 7 12:27:26 2012 +0100
gettext: Splitt development stuff and examples into own package.
Fixes #307.
commit 7072a3b0fef3aa28e590309a15d2d95ae84e588c
Merge: 4023155 78c574e
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 12:21:16 2012 +0100
Merge remote-tracking branch 'stevee/automake'
commit 4023155684b9803bc95fdebfefc40fad4c2dbe2c
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Sat Jan 7 12:16:34 2012 +0100
mstpd: Add patch by Vitalii.
I have not tested this, yet.
commit b63861229ecdf572ed05269ab25b8c1c2ca454e9
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Sun Jan 1 22:18:52 2012 +0100
dbus: Update to 1.4.16.
commit 3f942a5206f1bb926a845563d84a1f71f06c0085
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Fri Dec 30 22:22:06 2011 +0100
gettext: Fix testsuite.
Reference #307
commit 641c402a3cd9d128f93660fdd873adec2eee83a4
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Fri Dec 30 21:37:56 2011 +0100
openldap: Update to 2.4.28.
Fixes #309
commit 24bb6d49fa60ca272cb3848da8b8a59cb6408302
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Fri Dec 30 21:14:23 2011 +0100
libtiff: Update to 4.0.0 stable.
Also update URL and add DL URL.
Fixes #308.
commit 4500fa51a68a4fa53438ce493ff4924932b40375
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Fri Dec 30 20:28:02 2011 +0100
lighttpd: Update to 1.4.30.
Fixex #311.
commit 78c574e7d217817cdd6cf8dd3bfc24bacc6cf0f4
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date: Fri Dec 30 20:22:42 2011 +0100
automake: Update to 1.11.2.
Fixes #312
-----------------------------------------------------------------------
Summary of changes:
automake/automake.nm | 6 +-
dbus/dbus.nm | 5 +-
gettext/gettext.nm | 24 +-
gettext/patches/gettext-readlink-einval.patch | 24 +
libtiff/libtiff.nm | 16 +-
lighttpd/lighttpd.nm | 9 +-
mstpd/mstpd.nm | 2 +-
mstpd/patches/add-del-bridge-commands.patch0 | 619 +++++++++++++++++++++++++
openldap/openldap.nm | 6 +-
9 files changed, 685 insertions(+), 26 deletions(-)
create mode 100644 gettext/patches/gettext-readlink-einval.patch
create mode 100644 mstpd/patches/add-del-bridge-commands.patch0
Difference in files:
diff --git a/automake/automake.nm b/automake/automake.nm
index 05812d9..d1ce4bc 100644
--- a/automake/automake.nm
+++ b/automake/automake.nm
@@ -4,8 +4,8 @@
###############################################################################
name = automake
-version = 1.11.1
-release = 2
+version = 1.11.2
+release = 1
arch = noarch
groups = Development/Tools
@@ -14,7 +14,7 @@ license = GPLv2+
summary = A GNU tool for automatically configuring source code.
description
- Automake is a tool for automatically generating Makefile.in \
+ Automake is a tool for automatically generating Makefile.in
files compliant with the GNU Coding Standards.
end
diff --git a/dbus/dbus.nm b/dbus/dbus.nm
index c751bf1..6bfd2ea 100644
--- a/dbus/dbus.nm
+++ b/dbus/dbus.nm
@@ -4,8 +4,8 @@
###############################################################################
name = dbus
-version = 1.4.14
-release = 3
+version = 1.4.16
+release = 2
groups = System/Daemons
url = http://www.freedesktop.org/software/dbus/
@@ -24,6 +24,7 @@ build
requires
audit-devel
expat-devel
+ libcap-ng-devel
libselinux-devel
end
diff --git a/gettext/gettext.nm b/gettext/gettext.nm
index f3eaa8c..98a5fca 100644
--- a/gettext/gettext.nm
+++ b/gettext/gettext.nm
@@ -5,7 +5,7 @@
name = gettext
version = 0.18.1.1
-release = 4
+release = 6
groups = System/Base
url = http://www.gnu.org/software/gettext/
@@ -40,10 +40,9 @@ build
--enable-shared \
--disable-rpath
-# Disable testsuite - it's broken ( readlink test )
-# test
-# make check
-# end
+ test
+ make check
+ end
install_cmds
# cleanup rpaths
@@ -58,12 +57,27 @@ end
packages
package %{name}
+ package %{name}-common-devel
+ summary = Common development files for gettext.
+ description = %{summary}
+ arch = noarch
+
+ files
+ /usr/share/gettext/
+ end
+ end
+
package %{name}-devel
template DEVEL
requires
+ gettext-common-devel=%{thisver}
gettext-libs=%{thisver}
end
+
+ files += \
+ /usr/bin/autopoint \
+ /usr/share/man/man1/autopoint.1
end
package %{name}-libs
diff --git a/gettext/patches/gettext-readlink-einval.patch b/gettext/patches/gettext-readlink-einval.patch
new file mode 100644
index 0000000..4cc9092
--- /dev/null
+++ b/gettext/patches/gettext-readlink-einval.patch
@@ -0,0 +1,24 @@
+diff -U 3 -p -r gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-areadlink.h gettext-0.18.1.1/gettext-tools/gnulib-tests/test-areadlink.h
+--- gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-areadlink.h 2010-02-16 16:32:26.000000000 -0500
++++ gettext-0.18.1.1/gettext-tools/gnulib-tests/test-areadlink.h 2011-08-31 16:16:26.325521167 -0400
+@@ -36,7 +36,7 @@ test_areadlink (char * (*func) (char con
+ ASSERT (errno == ENOENT);
+ errno = 0;
+ ASSERT (func ("", 1) == NULL);
+- ASSERT (errno == ENOENT);
++ ASSERT (errno == ENOENT || errno == EINVAL);
+ errno = 0;
+ ASSERT (func (".", 1) == NULL);
+ ASSERT (errno == EINVAL);
+diff -U 3 -p -r gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-readlink.h gettext-0.18.1.1/gettext-tools/gnulib-tests/test-readlink.h
+--- gettext-0.18.1.1.orig/gettext-tools/gnulib-tests/test-readlink.h 2011-08-31 15:54:15.000000000 -0400
++++ gettext-0.18.1.1/gettext-tools/gnulib-tests/test-readlink.h 2011-08-31 16:16:09.325165556 -0400
+@@ -38,7 +38,7 @@ test_readlink (ssize_t (*func) (char con
+ ASSERT (errno == ENOENT);
+ errno = 0;
+ ASSERT (func ("", buf, sizeof buf) == -1);
+- ASSERT (errno == ENOENT);
++ ASSERT (errno == ENOENT || errno == EINVAL);
+ errno = 0;
+ ASSERT (func (".", buf, sizeof buf) == -1);
+ ASSERT (errno == EINVAL);
diff --git a/libtiff/libtiff.nm b/libtiff/libtiff.nm
index 35bb822..d81e2d4 100644
--- a/libtiff/libtiff.nm
+++ b/libtiff/libtiff.nm
@@ -4,23 +4,23 @@
###############################################################################
name = libtiff
-version = 4.0.0beta7
+version = 4.0.0
release = 2
+thisapp = tiff-%{version}
groups = System/Libraries
-url = http://www.libtiff.org
+url = http://www.remotesensing.org/libtiff/
license = libtiff ( own )
summary = Library of functions for manipulating TIFF format image files.
description
- The libtiff package contains a library of functions for manipulating \
- TIFF (Tagged Image File Format) image format files. TIFF is a widely \
- used file format for bitmapped images. TIFF files usually end in the \
+ The libtiff package contains a library of functions for manipulating
+ TIFF (Tagged Image File Format) image format files. TIFF is a widely
+ used file format for bitmapped images. TIFF files usually end in the
.tif extension and they are often quite large.
end
-source_dl =
-sources = tiff-%{version}.tar.gz
+source_dl = ftp://ftp.remotesensing.org/pub/libtiff/
build
requires
@@ -28,8 +28,6 @@ build
libjpeg-devel
end
- DIR_APP = %{DIR_SRC}/tiff-%{version}
-
configure_options += \
--enable-defer-strile-load \
--enable-chunky-strip-read
diff --git a/lighttpd/lighttpd.nm b/lighttpd/lighttpd.nm
index ade0c47..4d137de 100644
--- a/lighttpd/lighttpd.nm
+++ b/lighttpd/lighttpd.nm
@@ -4,7 +4,7 @@
###############################################################################
name = lighttpd
-version = 1.4.29
+version = 1.4.30
ver_major = 1.4
release = 2
@@ -38,7 +38,7 @@ build
end
configure_options += \
- --libdir=/usr/lib/%{name} \
+ --libdir=%{libdir}/%{name} \
--with-ldap \
--with-openssl
@@ -73,7 +73,10 @@ packages
/etc/lighttpd.conf
end
- prerequires = shadow-utils systemd-units
+ prerequires
+ shadow-utils
+ systemd-units
+ end
script prein
%{create_user}
diff --git a/mstpd/mstpd.nm b/mstpd/mstpd.nm
index 3e886d9..e4783f2 100644
--- a/mstpd/mstpd.nm
+++ b/mstpd/mstpd.nm
@@ -6,7 +6,7 @@
name = mstpd
version = 0.01
svn_ver = 22
-release = 0.3-svn%{svn_ver}.1
+release = 0.3-svn%{svn_ver}.2
thisapp = %{name}-%{version}-svn%{svn_ver}
groups = Networking/Tools
diff --git a/mstpd/patches/add-del-bridge-commands.patch0 b/mstpd/patches/add-del-bridge-commands.patch0
new file mode 100644
index 0000000..5f3e592
--- /dev/null
+++ b/mstpd/patches/add-del-bridge-commands.patch0
@@ -0,0 +1,619 @@
+Index: bridge_ctl.h
+===================================================================
+--- bridge_ctl.h (revision 22)
++++ bridge_ctl.h (revision 27)
+@@ -37,7 +37,7 @@
+ __u8 macaddr[ETH_ALEN];
+ char name[IFNAMSIZ];
+
+- bool up, stp_up;
++ bool up;
+ } sysdep_br_data_t;
+
+ typedef struct
+Index: bridge-stp
+===================================================================
+--- bridge-stp (revision 22)
++++ bridge-stp (revision 27)
+@@ -44,12 +44,12 @@
+ checkpid $pid_file || exit 1
+ for b in $MSTP_BRIDGES; do
+ if [ "$bridge" == "$b" ]; then
+- exec /sbin/mstpctl notify-daemon-that-stp-is-on $bridge
++ exec /sbin/mstpctl addbridge $bridge
+ fi
+ done
+ exit 1 ;;
+ stop)
+- exec /sbin/mstpctl notify-daemon-that-stp-is-off $bridge
++ exec /sbin/mstpctl delbridge $bridge
+ ;;
+ *)
+ echo "Unknown action:" $2
+Index: ctl_functions.h
+===================================================================
+--- ctl_functions.h (revision 22)
++++ ctl_functions.h (revision 27)
+@@ -448,23 +448,16 @@
+ #define set_fids2mstids_CALL (in->br_index, in->fids2mstids)
+ CTL_DECLARE(set_fids2mstids);
+
+-/* stp_mode_notification */
+-#define CMD_CODE_stp_mode_notification (122 | RESPONSE_FIRST_HANDLE_LATER)
+-#define stp_mode_notification_ARGS (int br_index, bool on)
+-struct stp_mode_notification_IN
+-{
+- int br_index;
+- bool on;
+-};
+-struct stp_mode_notification_OUT
+-{
+-};
+-#define stp_mode_notification_COPY_IN ({ in->br_index = br_index; \
+- in->on = on; })
+-#define stp_mode_notification_COPY_OUT ({ (void)0; })
+-#define stp_mode_notification_CALL (in->br_index, in->on)
+-CTL_DECLARE(stp_mode_notification);
++/* add bridges */
++#define CMD_CODE_add_bridges (122 | RESPONSE_FIRST_HANDLE_LATER)
++#define add_bridges_ARGS (int *br_array, int* *ifaces_lists)
++CTL_DECLARE(add_bridges);
+
++/* delete bridges */
++#define CMD_CODE_del_bridges (123 | RESPONSE_FIRST_HANDLE_LATER)
++#define del_bridges_ARGS (int *br_array)
++CTL_DECLARE(del_bridges);
++
+ /* General case part in ctl command server switch */
+ #define SERVER_MESSAGE_CASE(name) \
+ case CMD_CODE_ ## name : do \
+Index: bridge_track.c
+===================================================================
+--- bridge_track.c (revision 22)
++++ bridge_track.c (revision 27)
+@@ -175,27 +175,11 @@
+ }
+ }
+
+-static bool stp_enabled(bridge_t * br)
++static void set_br_up(bridge_t * br, bool up)
+ {
+- char path[40 + IFNAMSIZ];
+- sprintf(path, "/sys/class/net/%s/bridge/stp_state", br->sysdeps.name);
+- FILE *f = fopen(path, "r");
+- int enabled = 0;
+- if(!f || (1 != fscanf(f, "%d", &enabled)))
+- ERROR("Can't read from %s", path);
+- fclose(f);
+- INFO("STP on %s state %d", br->sysdeps.name, enabled);
++ INFO("%s was %s", br->sysdeps.name, br->sysdeps.up ? "up" : "down");
++ INFO("Set bridge %s %s", br->sysdeps.name, up ? "up" : "down");
+
+- return enabled == 2; /* ie user mode STP */
+-}
+-
+-static void set_br_up(bridge_t * br, bool up, bool stp_up)
+-{
+- INFO("%s was %s stp was %s", br->sysdeps.name,
+- br->sysdeps.up ? "up" : "down", br->sysdeps.stp_up ? "up" : "down");
+- INFO("Set bridge %s %s stp %s" , br->sysdeps.name,
+- up ? "up" : "down", stp_up ? "up" : "down");
+-
+ bool changed = false;
+
+ if(up != br->sysdeps.up)
+@@ -204,12 +188,6 @@
+ changed = true;
+ }
+
+- if(br->sysdeps.stp_up != stp_up)
+- {
+- br->sysdeps.stp_up = stp_up;
+- changed = true;
+- }
+-
+ if(check_mac_address(br->sysdeps.name, br->sysdeps.macaddr))
+ {
+ /* MAC address changed */
+@@ -218,7 +196,7 @@
+ }
+
+ if(changed)
+- MSTP_IN_set_bridge_enable(br, br->sysdeps.up && br->sysdeps.stp_up);
++ MSTP_IN_set_bridge_enable(br, br->sysdeps.up);
+ }
+
+ static void set_if_up(port_t * ifc, bool up)
+@@ -291,15 +269,10 @@
+ if((br_index >= 0) && (br_index != if_index))
+ {
+ if(!(br = find_br(br_index)))
+- br = create_br(br_index);
+- if(!br)
+- {
+- ERROR("Couldn't create data for bridge interface %d", br_index);
+- return -1;
+- }
++ return -2; /* bridge not in list */
+ int br_flags = get_flags(br->sysdeps.name);
+ if(br_flags >= 0)
+- set_br_up(br, !!(br_flags & IFF_UP), stp_enabled(br));
++ set_br_up(br, !!(br_flags & IFF_UP));
+ }
+
+ if(br)
+@@ -358,15 +331,8 @@
+ if(br_index == if_index)
+ {
+ if(!(br = find_br(br_index)))
+- {
+- if(!(br = create_br(br_index)))
+- {
+- ERROR("Couldn't create data for bridge interface %d",
+- br_index);
+- return -1;
+- }
+- }
+- set_br_up(br, up, stp_enabled(br));
++ return -2; /* bridge not in list */
++ set_br_up(br, up);
+ }
+ }
+ }
+@@ -412,8 +378,6 @@
+ /* sanity checks */
+ TST(br == ifc->bridge,);
+ TST(ifc->sysdeps.up,);
+- if(!br->sysdeps.stp_up)
+- return;
+
+ /* Validate Ethernet and LLC header,
+ * maybe we can skip this check thanks to Berkeley filter in packet socket?
+@@ -840,12 +804,85 @@
+ return MSTP_IN_set_all_fids2mstids(br, fids2mstids) ? 0 : -1;
+ }
+
+-int CTL_stp_mode_notification(int br_index, bool on)
++int CTL_add_bridges(int *br_array, int* *ifaces_lists)
+ {
+- int br_flags;
+- CTL_CHECK_BRIDGE;
+- if(0 > (br_flags = get_flags(br->sysdeps.name)))
+- return br_flags;
+- set_br_up(br, !!(br_flags & IFF_UP), on);
++ int i, j, ifcount, brcount = br_array[0];
++ bridge_t *br, *other_br;
++ port_t *ifc, *nxt;
++ int br_flags, if_flags;
++ int *if_array;
++ bool found;
++
++ for(i = 1; i <= brcount; ++i)
++ {
++ if(NULL == (br = find_br(br_array[i])))
++ {
++ if(NULL == (br = create_br(br_array[i])))
++ {
++ ERROR("Couldn't create data for bridge interface %d",
++ br_array[i]);
++ return -1;
++ }
++ if(0 <= (br_flags = get_flags(br->sysdeps.name)))
++ set_br_up(br, !!(br_flags & IFF_UP));
++ }
++ if_array = ifaces_lists[i - 1];
++ ifcount = if_array[0];
++ /* delete all interfaces which are not in list */
++ list_for_each_entry_safe(ifc, nxt, &br->ports, br_list)
++ {
++ found = false;
++ for(j = 1; j <= ifcount; ++j)
++ {
++ if(ifc->sysdeps.if_index == if_array[j])
++ {
++ found = true;
++ break;
++ }
++ }
++ if(!found)
++ delete_if(ifc);
++ }
++ /* add all new interfaces from the list */
++ for(j = 1; j <= ifcount; ++j)
++ {
++ if(NULL != find_if(br, if_array[j]))
++ continue;
++ /* Check if this interface is slave of another bridge */
++ list_for_each_entry(other_br, &bridges, list)
++ {
++ if(other_br != br)
++ if(delete_if_byindex(other_br, if_array[j]))
++ {
++ INFO("Device %d has come to bridge %s. "
++ "Missed notify for deletion from bridge %s",
++ if_array[j], br->sysdeps.name,
++ other_br->sysdeps.name);
++ break;
++ }
++ }
++ if(NULL == (ifc = create_if(br, if_array[j])))
++ {
++ INFO("Couldn't create data for interface %d (master %s)",
++ if_array[j], br->sysdeps.name);
++ continue;
++ }
++ if(0 <= (if_flags = get_flags(ifc->sysdeps.name)))
++ set_if_up(ifc, (IFF_UP | IFF_RUNNING) ==
++ (if_flags & (IFF_UP | IFF_RUNNING))
++ );
++ }
++ }
++
+ return 0;
+ }
++
++int CTL_del_bridges(int *br_array)
++{
++ int i, brcount = br_array[0];
++
++ for(i = 1; i <= brcount; ++i)
++ delete_br_byindex(br_array[i]);
++
++ return 0;
++}
+Index: ctl_socket_server.c
+===================================================================
+--- ctl_socket_server.c (revision 22)
++++ ctl_socket_server.c (revision 27)
+@@ -82,8 +82,92 @@
+ SERVER_MESSAGE_CASE(set_fid2mstid);
+ SERVER_MESSAGE_CASE(set_vids2fids);
+ SERVER_MESSAGE_CASE(set_fids2mstids);
+- SERVER_MESSAGE_CASE(stp_mode_notification);
+
++ case CMD_CODE_add_bridges:
++ {
++ if(0 != lout)
++ {
++ LOG("Bad sizes: lout %d != 0", lout);
++ return -1;
++ }
++ if(sizeof(int) > lin)
++ {
++ LOG("Bad sizes: lin == 0");
++ return -1;
++ }
++ int *br_array = inbuf;
++ int i, serialized_data_count, chunk_count, brcount = br_array[0];
++ int *ptr = br_array + (serialized_data_count = (brcount + 1));
++ if(lin < ((serialized_data_count + 1) * sizeof(int)))
++ {
++bad_lin1: LOG("Bad sizes: lin %d < %d", lin,
++ (serialized_data_count + 1) * sizeof(int));
++ return -1;
++ }
++ for(i = 0; i < brcount; ++i)
++ {
++ serialized_data_count += (chunk_count = *ptr + 1);
++ if(i < (brcount - 1))
++ {
++ if(lin < ((serialized_data_count + 1) * sizeof(int)))
++ goto bad_lin1;
++ ptr += chunk_count;
++ }
++ else
++ {
++ if(lin != (serialized_data_count * sizeof(int)))
++ {
++ LOG("Bad sizes: lin %d != %d", lin,
++ serialized_data_count * sizeof(int));
++ return -1;
++ }
++ }
++ }
++ int* *ifaces_lists = malloc(brcount * sizeof(int*));
++ if(NULL == ifaces_lists)
++ {
++ LOG("out of memory, brcount = %d\n", brcount);
++ return -1;
++ }
++ ptr = br_array + (brcount + 1);
++ for(i = 0; i < brcount; ++i)
++ {
++ ifaces_lists[i] = ptr;
++ ptr += ifaces_lists[i][0] + 1;
++ }
++ int r = CTL_add_bridges(br_array, ifaces_lists);
++ free(ifaces_lists);
++ if(r)
++ return r;
++ return r;
++ }
++
++ case CMD_CODE_del_bridges:
++ {
++ if(0 != lout)
++ {
++ LOG("Bad sizes: lout %d != 0", lout);
++ return -1;
++ }
++ if(sizeof(int) > lin)
++ {
++ LOG("Bad sizes: lin == 0");
++ return -1;
++ }
++ int *br_array = inbuf;
++ int brcount = br_array[0];
++ if(((brcount + 1) * sizeof(int)) != lin)
++ {
++ LOG("Bad sizes: lin %d != %d", lin,
++ (brcount + 1) * sizeof(int));
++ return -1;
++ }
++ int r = CTL_del_bridges(br_array);
++ if(r)
++ return r;
++ return r;
++ }
++
+ default:
+ ERROR("CTL: Unknown command %d", cmd);
+ return -1;
+Index: mstp.c
+===================================================================
+--- mstp.c (revision 22)
++++ mstp.c (revision 27)
+@@ -206,7 +206,6 @@
+ return false;
+ list_add_tail(&cist->bridge_list, &br->trees);
+
+- br_state_machines_begin(br);
+ return true;
+ }
+
+Index: ctl_main.c
+===================================================================
+--- ctl_main.c (revision 22)
++++ ctl_main.c (revision 27)
+@@ -636,6 +636,18 @@
+ return !('.' == n[0] && (0 == n[1] || ('.' == n[1] && 0 == n[2])));
+ }
+
++static int get_port_list(const char *br_ifname, struct dirent ***namelist)
++{
++ int res;
++ char buf[SYSFS_PATH_MAX];
++
++ snprintf(buf, sizeof(buf), SYSFS_CLASS_NET "/%s/brif", br_ifname);
++ if(0 > (res = scandir(buf, namelist, not_dot_dotdot, sorting_func)))
++ fprintf(stderr, "Error getting list of all ports of bridge %s\n",
++ br_ifname);
++ return res;
++}
++
+ static int cmd_showport(int argc, char *const *argv)
+ {
+ int r = 0;
+@@ -666,15 +678,8 @@
+ }
+ else
+ {
+- char buf[SYSFS_PATH_MAX];
+- snprintf(buf, sizeof(buf), SYSFS_CLASS_NET "/%s/brif", argv[1]);
+- count = scandir(buf, &namelist, not_dot_dotdot, sorting_func);
+- if(0 > count)
+- {
+- fprintf(stderr, "Error getting list of all ports of bridge %s\n",
+- argv[1]);
+- return -1;
+- }
++ if(0 > (count = get_port_list(argv[1], &namelist)))
++ return count;
+ }
+
+ for(i = 0; i < count; ++i)
+@@ -740,6 +745,91 @@
+ return 0;
+ }
+
++static int cmd_addbridge(int argc, char *const *argv)
++{
++ int i, j, res, ifcount, brcount = argc - 1;
++ int *br_array;
++ int* *ifaces_lists;
++
++ if(NULL == (br_array = malloc((brcount + 1) * sizeof(int))))
++ {
++out_of_memory_exit:
++ fprintf(stderr, "out of memory, brcount = %d\n", brcount);
++ return -1;
++ }
++ if(NULL == (ifaces_lists = malloc(brcount * sizeof(int*))))
++ {
++ free(br_array);
++ goto out_of_memory_exit;
++ }
++
++ br_array[0] = brcount;
++ for(i = 1; i <= brcount; ++i)
++ {
++ struct dirent **namelist;
++
++ br_array[i] = get_index(argv[i], "bridge");
++
++ if(0 > (ifcount = get_port_list(argv[i], &namelist)))
++ {
++ifaces_error_exit:
++ for(i -= 2; i >= 0; --i)
++ free(ifaces_lists[i]);
++ free(ifaces_lists);
++ free(br_array);
++ return ifcount;
++ }
++
++ if(NULL == (ifaces_lists[i - 1] = malloc((ifcount + 1) * sizeof(int))))
++ {
++ fprintf(stderr, "out of memory, bridge %s, ifcount = %d\n",
++ argv[i], ifcount);
++ for(j = 0; j < ifcount; ++j)
++ free(namelist[j]);
++ free(namelist);
++ ifcount = -1;
++ goto ifaces_error_exit;
++ }
++
++ ifaces_lists[i - 1][0] = ifcount;
++ for(j = 1; j <= ifcount; ++j)
++ {
++ ifaces_lists[i - 1][j] = get_index(namelist[j - 1]->d_name, "port");
++ free(namelist[j - 1]);
++ }
++ free(namelist);
++ }
++
++ res = CTL_add_bridges(br_array, ifaces_lists);
++
++ for(i = 0; i < brcount; ++i)
++ free(ifaces_lists[i]);
++ free(ifaces_lists);
++ free(br_array);
++ return res;
++}
++
++static int cmd_delbridge(int argc, char *const *argv)
++{
++ int i, res, brcount = argc - 1;
++ int *br_array;
++
++ if(NULL == (br_array = malloc((brcount + 1) * sizeof(int))))
++ {
++ fprintf(stderr, "out of memory, brcount = %d\n", brcount);
++ return -1;
++ }
++
++ br_array[0] = brcount;
++ for(i = 1; i <= brcount; ++i)
++ br_array[i] = get_index(argv[i], "bridge");
++
++ res = CTL_del_bridges(br_array);
++
++ free(br_array);
++ return res;
++}
++
+ static unsigned int getuint(const char *s)
+ {
+ char *end;
+@@ -1191,23 +1281,6 @@
+ return CTL_set_fid2mstid(br_index, fid, mstid);
+ }
+
+-static int cmd_stp_mode_notification(int argc, char *const *argv, bool on)
+-{
+- int br_index;
+- /* Because this command has special handling,
+- * argc was not checked earlier
+- */
+- if(2 > argc)
+- {
+- fprintf(stderr,
+- "Incorrect number of arguments for notification command\n");
+- exit(1);
+- }
+- if(0 > (br_index = get_index(argv[1], "bridge")))
+- return br_index;
+- return CTL_stp_mode_notification(br_index, on);
+-}
+-
+ struct command
+ {
+ int nargs;
+@@ -1220,6 +1293,12 @@
+
+ static const struct command commands[] =
+ {
++ /* Add/delete bridges */
++ {1, 32, "addbridge", cmd_addbridge,
++ "<bridge> [<bridge> ...]", "Add bridges to the mstpd's list"},
++ {1, 32, "delbridge", cmd_delbridge,
++ "<bridge> [<bridge> ...]", "Remove bridges from the mstpd's list"},
++
+ /* Show global bridge */
+ {0, 32, "showbridge", cmd_showbridge,
+ "[<bridge> ... [param]]", "Show bridge state for the CIST"},
+@@ -1370,12 +1449,6 @@
+ argv += optind;
+ if(NULL == (cmd = command_lookup(argv[0])))
+ {
+- /* Two special commands not intended for interactive use */
+- if(!strcmp(argv[0], "notify-daemon-that-stp-is-on"))
+- return cmd_stp_mode_notification(argc, argv, true);
+- if(!strcmp(argv[0], "notify-daemon-that-stp-is-off"))
+- return cmd_stp_mode_notification(argc, argv, false);
+-
+ fprintf(stderr, "never heard of command [%s]\n", argv[0]);
+ goto help;
+ }
+@@ -1417,8 +1490,61 @@
+ CLIENT_SIDE_FUNCTION(set_fid2mstid)
+ CLIENT_SIDE_FUNCTION(set_vids2fids)
+ CLIENT_SIDE_FUNCTION(set_fids2mstids)
+-CLIENT_SIDE_FUNCTION(stp_mode_notification)
+
++CTL_DECLARE(add_bridges)
++{
++ int res = 0;
++ LogString log = { .buf = "" };
++ int i, chunk_count, brcount, serialized_data_count;
++ int *serialized_data, *ptr;
++
++ chunk_count = serialized_data_count = (brcount = br_array[0]) + 1;
++ for(i = 0; i < brcount; ++i)
++ serialized_data_count += ifaces_lists[i][0] + 1;
++ if(NULL == (serialized_data = malloc(serialized_data_count * sizeof(int))))
++ {
++ LOG("out of memory, serialized_data_count = %d",
++ serialized_data_count);
++ return -1;
++ }
++ memcpy(serialized_data, br_array, chunk_count * sizeof(int));
++ ptr = serialized_data + chunk_count;
++ for(i = 0; i < brcount; ++i)
++ {
++ chunk_count = ifaces_lists[i][0] + 1;
++ memcpy(ptr, ifaces_lists[i], chunk_count * sizeof(int));
++ ptr += chunk_count;
++ }
++
++ int r = send_ctl_message(CMD_CODE_add_bridges, serialized_data,
++ serialized_data_count * sizeof(int),
++ NULL, 0, &log, &res);
++ free(serialized_data);
++ if(r || res)
++ LOG("Got return code %d, %d\n%s", r, res, log.buf);
++ if(r)
++ return r;
++ if(res)
++ return res;
++ return 0;
++}
++
++CTL_DECLARE(del_bridges)
++{
++ int res = 0;
++ LogString log = { .buf = "" };
++ int r = send_ctl_message(CMD_CODE_del_bridges,
++ br_array, (br_array[0] + 1) * sizeof(int),
++ NULL, 0, &log, &res);
++ if(r || res)
++ LOG("Got return code %d, %d\n%s", r, res, log.buf);
++ if(r)
++ return r;
++ if(res)
++ return res;
++ return 0;
++}
++
+ /*********************** Logging *********************/
+
+ void Dprintf(int level, const char *fmt, ...)
diff --git a/openldap/openldap.nm b/openldap/openldap.nm
index 699f023..c6bfb7e 100644
--- a/openldap/openldap.nm
+++ b/openldap/openldap.nm
@@ -4,8 +4,8 @@
###############################################################################
name = openldap
-version = 2.4.25
-release = 3
+version = 2.4.28
+release = 2
groups = System/Daemons
url = http://www.openldap.org/
@@ -21,7 +21,7 @@ description
documentation for OpenLDAP.
end
-source_dl =
+source_dl = ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/
sources = %{thisapp}.tgz
build
hooks/post-receive
--
IPFire 3.x development tree
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2012-01-07 20:14 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-07 20:14 [IPFire-SCM] [git.ipfire.org] IPFire 3.x development tree branch, master, updated. 10165db27f1c1e4170b7985bc8fbf8179e910e62 git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox