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@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@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@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@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@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@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@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@ipfire.org Date: Sat Jan 7 12:28:20 2012 +0100
Merge remote-tracking branch 'stevee/dbus'
commit 997373fd908358cccd263a7816da60c20eb6c7dd Author: Stefan Schantl stefan.schantl@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@ipfire.org Date: Sat Jan 7 12:21:16 2012 +0100
Merge remote-tracking branch 'stevee/automake'
commit 4023155684b9803bc95fdebfefc40fad4c2dbe2c Author: Michael Tremer michael.tremer@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@ipfire.org Date: Sun Jan 1 22:18:52 2012 +0100
dbus: Update to 1.4.16.
commit 3f942a5206f1bb926a845563d84a1f71f06c0085 Author: Stefan Schantl stefan.schantl@ipfire.org Date: Fri Dec 30 22:22:06 2011 +0100
gettext: Fix testsuite.
Reference #307
commit 641c402a3cd9d128f93660fdd873adec2eee83a4 Author: Stefan Schantl stefan.schantl@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@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@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@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