aboutsummaryrefslogtreecommitdiffstats
path: root/package/libs/libnl
Commit message (Collapse)AuthorAgeFilesLines
* treewide: add support for "gc-sections" in PKG_BUILD_FLAGSAndre Heider2023-03-211-1/+3
| | | | | | | | | | | | | | | This reduces open coding and allows to easily add a knob to enable it treewide, where chosen packages can still opt-out via "no-gc-sections". Note: libnl, mbedtls and opkg only used the CFLAGS part without the LDFLAGS counterpart. That doesn't help at all if the goal is to produce smaller binaries. I consider that an accident, and this fixes it. Note: there are also packages using only the LDFLAGS part. I didn't touch those, as gc might have been disabled via CFLAGS intentionally. Signed-off-by: Andre Heider <a.heider@gmail.com>
* libnl: add PKG_CPE_IDNick Hainke2022-09-061-0/+1
| | | | | | Add CPE ID for tracking CVEs. Signed-off-by: Nick Hainke <vincent@systemli.org>
* libnl: update to 3.7.0Nick Hainke2022-07-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes: 1bb4162 libnl-3.7.0 release 897ec9c route: act: Allow full set of actions on gact,skbedit,mirred 00e46f1 Use print() function in both Python 2 and Python 3 083c1b6 sriov: fix setting ce_mask when parsing VF stat counter 2e9a4f7 Fix typos and errors cc87ad2 changelog: update URL to git history bde0b4c changelog: fix typos in ChangeLog 44988e6 route: format recently added code with clang-format df6e38b route/act: add NAT action 7304c42 route: format recently added code with clang-format f8eb218 cls: flower: extend flower API e5dc111 flower: use correct attribute when filling out flags df6058c tests: merge branch 'th/test-link' 9772c1d tests: add unit tests for creating links 4713b76 github: run unit tests several times and directly 8025547 github: export NLTST_SEED_RAND= to randomize unit tests 7efeca2 tests: add test utils f6f4d36 tests: reformat unit test files with clang-format 135a706 utils: add _NL_AUTO_DEFINE_FCN_STRUCT() macro 0ea11be utils: add _nl_thread_local macro 9b04936 route: fix crash caused by parse_multipath() by wrong free() 2effffe route/link: Set the cache ops when cloning a link 5ecd56c route/link: add lock around rtnl_link_af_ops_put() e1a077a route/link: avoid accessing af_ops after af_free() in rtnl_link_set_family() 3f4f1dd xfrm/sa: fix reference counters of sa selector addresses d3c783f all: merge branch 'th/coverity-fixes' 23a75c5 xfrm: fix uninitalized variables in build_xfrm_ae_message() d52dbcb route: fix check for NULL in nh_encap_dump() 1f61096 route/qdisc/mqprio: fix bufferoverflow and argument checking in rtnl_qdisc_mqprio_set_*() f918c3a route/sriov: fix buffer overflow in rtnl_link_sriov_parse_vflist() d4c7972 all: fix "-Wformat" warnings for nl_dump*() 6b2f238 netlink/utils.h: mark nl_dump() with __attribute__((format(printf,a,b))) d3bd278 netlink/utils.h: add internal _nl_attribute_printf macro for public headers a30b26d socket: workaround undefined behavior coverity warning in generate_local_port() 8acf6d5 nl-pktloc-lookup: fix buffer overflow when printing alignment bf3585f route/link/sriov: fix initializing vlans in rtnl_link_sriov_clone() dd06d22 route/qdisc/netem: fix bogus "%" in format string netem_dump_details() f50a802 route/u32: fix u32_dump_details() to print data fa79ee3 link/vrf: avoid coverity warning in rtnl_link_vrf_set_tableid() about CONSTANT_EXPRESSION_RESULT 31380f8 utils: suppress coverity warning in nl_cli_load_module() about leaked handle aa398b5 route/ip6vti,ip6gre: fix printing invalid data in ip6{vti,gre}_dump_details() 40683cc netlink/private: add internal helper utils 6615dc0 route/link: workaround coverity warning about leak in rtnl_link_set_type() ff5ef61 all: avoid coverity warnings about assigning variable but not using it f58a3c0 route/mdb: check parser error in mdb_msg_parser() for nested MDBA_MDB attribute 46506d3 route/mdb: add and use rtnl_mdb_entry_free() internal helper method 46e85d2 route/mdb: fix leak in mdb_msg_parser() b0641dd route/mdb: add _nl_auto_rtnl_mdb cleanup macro d544105 route/mdb: fix buffer overflow in mdb_msg_parser() 4d12b63 tests: silently ignore EACCES for setting uid_map for test namespace ec712a4 tests: cleanup unshare_user() and use _nltst_fclose() 85e3c5d tests: add _assert_nltst_netns() helper 39e4d8d github: test out-of-tree build and "--disable-static" d63e473 github: build documentation in CI test fa7f97f build: avoid building check-direct with --disable-static 8c741a7 tools: fix aborting on failure in "tools/build_release.sh" script e2aa409 doc: fix markup error in "doc/route.txt" 4f3b4f9 doc: fix python2-ism in "doc/resolve-asciidoc-refs.py" Signed-off-by: Nick Hainke <vincent@systemli.org>
* libnl: update to 3.6.0Nick Hainke2022-07-032-28/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove upstreamed patch: - 100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch cacaa5f libnl-3.6.0 release 855c02f route/mdb: merge branch 'troglobit:mdb-dump-fixes' 930fc11 route/mdb: add support for MAC multicast entries 2d68caf route/mdb: add missing detils and stats dump callbacks d9ed99b nl-monitor: support for setting libnl debug level 4c41e0d nl-monitor: add missing --help to long_opts[] 7e96356 Check validation type against end of enum 4e153bc route/link: add VLAN bridge binding flag b7256d3 github: build unit tests also with "clang" 8111933 route: assert that "rtnl_link_info_ops" refcount does not drop below zero 4f5c846 lib: merge branch 'th/object-clone-fixes' d23fb81 lib: make nl_object_clone() out-of-memory safe 7f7452c route: fix ref counting for l_info_ops and io_clone() 620d024 route: drop unnecessary oo_clone() implementation from netconf 93a02eb netfilter: make log-msg,queue-msg setters robust against ENOMEM 23902d0 xfrm/sa: clone user_offload in xfrm_sa_clone() 29e5092 xfrm/sa: style cleanup xfrm_sa_clone() 14a9ebc utils: add internal _nl_memdup() helper 2e0d7f8 lib: add rtnl_link_info_ops_get() and take lock for rtnl_link_info_ops's io_refcnt e884286 lib: include <netlink-private/utils.h> in <netlink-private/netlink.h> 7d43191 tests: merge branch 'th/tests-netns' a7bbdab tests: add unit test for nl_object_clone() and nl_object_diff() fdb0121 tests: add new "netns" test suite 9102872 tests: add fixture/teardown for tests to run in separate netns 9a42798 tests: cleanup creating test suites 1fc3e07 tests: refactor tests and add n-test-util helper library 7a3d6e2 netlink: add _NL_N_ELEMENTS() macro 3da4f7d netlink: add _nl_streq()/_nl_streq0() helper 1ad8555 netlink: add _nl_auto_nl_socket cleanup macro c8a5729 lib: add _nl_close() helper 80868e6 clang-format: add ".clang-format" from linux kernel 2782ed3 github: build tests with "-std=gnu11" af59b9a github: split tests in separate steps c8f7902 build: add "check-progs" make target to build unit tests 23b4d33 route/cls: add TCA_FLOWER_KEY_VLAN_ETH_TYPE to "flower_policy" policy 1f8dc89 route/cls: return -NLE_INVAL in case rtnl_tc_data_peek() fails ef5f3eb route/cls: merge branch 'westermo:cls-flower' c385c84 route/cls: no need to copy simple fields in flower_clone() 79217d8 route/cls: make output pointers in rtnl_flower_get_{src,dst}_mac() optional 64e0836 route/cls: adjust whitspace/indentation 5ac9ce3 route/cls: use SPDX-License-Identifier 1a1c4e5 route/cls: reorder fields in "struct rtnl_flower" and adjust indentation ef46de1 route/cls: add flower classifier f0aad20 route: merge branch 'pugo:master' d0cfecc route: make argument of rtnl_link_can_set_{bittiming,data_bittiming}() const 6a92268 route: add rtnl_link_can_set_data_bittiming_const() 841553b route: drop bitrate,sample-point getters/setters from can link 37998f7 route: rename rtnl_link_can_get_data_bt_const() to rtnl_link_can_get_data_bittiming_const() 96d3a6b route: fix adding rtnl_link_can_* symbols to symbol file 881e329 route: fix indentation 37c10ef route/link: add CAN FD support d56bf73 route/mdb: merge branch 'rubensfig:mdb' e0b2406 route/mdb: drop setting ifindex in mdb_clone() d78a6eb route/mdb: minor cleanup in "mdb.c" 57a6d51 route/mdb: drop extra MDB attributes and rework mdb_compare() 0b44562 route/mdb: hide rtnl_mdb_entry_alloc() from public API 1c65ff7 route/mdb: reorder fields in "rtnl_mdb_entry" for tighther packing 1ac5403 route/mdb: use nl_list_for_each_entry_safe() for destroying list in mdb_free_data() 92035e2 route/mdb: cleanup mdb.h header 6237621 build: sort file names in Makefile.am 0ec6c6c mdb: support bridge multicast database notification c980034 route/cls: merge branch 'westermo:classifier-api-extension' a694c33 route/cls: rename rtnl_cls_get{,_by_prio}() API to rtnl_cls_find_by{handle,prio}() 88a5138 route/cls: allow fetching of classifiers from cache 90577b5 route: merge branch 'TummyFish:master' 299f61a license: use SPDX license identifiers and drop license comments 05a540d ip6vti: Add fwmark API 41e4365 ip6gre: Add fwmark API ebc7df3 sit: Add fwmark API 8e1da8e ipip: Add fwmark API bda19be ip6_tnl: Add fwmark API cdc6c0f ipvti: Add fwmark API 2995710 ipgre: Add fwmark API d9dc6c2 ip6vti: Add IPv6 VTI support be86170 license: use SPDX license identifiers and drop license comments 919d9c6 route: merge branch 'westermo:fib-lookup' 1ff9b38 route/route: don't report failure when we receive a route in rtnl_route_lookup() 53bc27e route/route: support FIB lookups using rtnl ed76b9a build: sort files in Makefile.am 46b22c1 route/link: merge branch 'westermo:team-support' 586a6b6 build: fix new symbols in "libnl-route-3.sym" 831f125 route/link: add support for team device 6c59580 route/link: Move LINK_ATTR_IFNAME to a proper location f77cd25 route/netconf: full API export f59f443 build: add Libs.private field in libnl pkg-config file b3333e0 route/qdisc: allow fetching qdiscs by their kind 9a39188 netlink: merge branch 'michael-dev:feature/nflog-vlan-v3' a93fc5f nflog: add recent missing symbols to "libnl-nf-3.sym" 7b4df53 nflog: add missing symbols to "libnl-nf-3.sym" 8266436 nflog:add conntrack flag and enable flags for nflog 246904d nflog: add CT support 59fc1d7 nflog: add mac_header support c268c48 nflog: add vlan attribute 2548468 refresh linux/netfilter/nfnetlink_log.h with linux 5.4 4edffbd route/link: Add IPv6 GRE support 5d69587 route: add global sectin in "libnl-route-3.sym" d0cf3a9 neigh: support to add fdb entry 3bf0a9c cls:u32: fix u32_clone() function 3147d86 route:tc: fix rtnl_tc_clone() calling to_clone() and add comment c027e54 route:cls: fix dangling pointers in to_clone() implementations 47c04fb route:act: drop unnecessary implementations for to_clone() 79f7c9d tests: add test for cloning cls:u32 object b1caff8 github: run unit tests under valgrind 38b3be3 tests: cleanup tests and avoid leaks c2b94b9 lib: add more _nl_auto* cleanup macros 1f05e5a tests: replace libcheck's fail_if() macro by ck_assert*() 6341d89 log: fix typo in dumping msg bfee88b route: fix memory leak of l_info_ops in link_msg_parser() 431ba83 route: merge branch 'qbdwlr:mplsPR' cc680d4 route: add accessors for setting/getting ENCAP_MPLS attributes efe8aad route: remove incorrect nl_addr_valid() from rtnl_route_nh_set_newdst(), etc. 0688bc6 netfilter/ct: fix use of reply/orig for conntrack requests 5d92516 route: don't use internal bit mask constants in NLA_PUT in can_put_attrs() 6fe9418 lib: fix descriptions for nl_cache_pickup()/nl_cache_pickup_checkdup() d0d91c7 route: merge branch 't0mmmy90:check-if-nh-exists-while-updating-ipv6-multipath-route' 28a652b route: fix duplicate check for next hop for IPv6 multipath routes 03bfd2f route: check if nh exists while updating route 92c9237 ci: add github-actions 3d1fb00 tests/check-addr: replace deprecated fail_if() macro from libcheck with ck_assert_msg() d9cad53 xfrm: fix naming consistency in xfrmnl_sp_get_curlifetime() c0e82db cli: Add C++ linkage support 000a3bd yyerror: update to POSIX standard f865a99 xfrm: merge branch 'spellingmistake:master' 0306ae2 xfrm: fix libnl-xfrm-3.sym linker versioning 8950194 xfrm: ensure minlen in policy for XFRMA_OFFLOAD_DEV c8f33a4 xfrm: Add support for xfrm user offloading b6cc13d Supporting Hardware offload capability for MACsec 39944c6 route/link: check calloc() return value 12cc0aa zero stack allocated memory in xfrmnl_build_sa_delete_request 5f39502 merge branch 'bengal/coverity' 26f342d route/qdisc: handle error of calloc() d1a151e route/qdisc: fix memory leak in netem.c aa092d1 route/link: fix copy-paste error in geneve.c 30552e8 route/cls: fix cgroup's clone() function 764c30a route: let route/link join RTNLGRP_IPV6_IFINFO mcast group b24e833 doc: update link to mscgen-filter 0b5d17d addr: merge branch 'lcrestez-dn:dadfailed' 30924e7 tests: Add test for rtnl_addr_flags2str 5c05c75 addr: Add address flag `dadfailed` 2abeec8 xfrm: remove superfluous xfrm_userpolicy_id from dump request 5611487 lib/trivial: whitespace ab015e1 lib: merge branch 'th/object-identical-fix' 36b0894 lib: allow to compare incomplete objects in nl_object_identical() 5020077 lib: let nl_object_identical() declare the same object as identical 406ebc8 lib: fix using right compare mask in nl_object_diff64() 8637c70 lib/trivial fix indentation 4be6062 route/link: avoid cloning link policy in link_msg_parser() ba3c51c route/link: fix link_msg_parser() for using the af_ops of the link family f9d0181 lib: use proper int type for id attributes in nl_object_identical() 68b3431 lib: fix documentation of nl_cache_dump_filter to have @params optional 2375cde lib: fix spelling errors in "netlink/handlers.h" 3faf26c gitignore: fix ignoring check-direct build artifacts 47fb1c0 xfrm: remove superfluous xfrm_usersa_id from dump request 846d288 travis: install "check" in travis d64a0ec route: convert non-leading tabs to spaces in "include/netlink/route/link.h" aaefd92 route: add test for valid content of map_stat_id_from_IPSTATS_MIB_v2 array bab9e77 route/link: add RTNL_LINK_REASM_OVERLAPS stat bae11ec tests: add "check-direct" test 2d50b04 route: add "netlink-private/route/utils.h" header 9a52b3d gitignore: merge all gitignore files in top level directory 4c5f2d6 merge branch 'th/license-comment-cleanup' 2d3e690 license: update "doc/COPYING" license text 1389188 license: add SPDX license identifer to "configure.ac" files 503aa5e license: fix and add SPDX license identifiers and drop license comments 4333aef license: cleanup copyright comments 956635b license: fix SPDX license identifier for nl-auto.h 5614b4c lib: merge branch 'th/cleanup-errout' 17e09aa rtnl/route: use cleanup attribute in "lib/route/link.c" b50be8f rtnl/route: use cleanup attribute in "lib/route/route_obj.c" fca338b rtnl/route: fix NLE_NOMEM handling in parse_multipath() 2957d8f rtnl/link: fix leaking rtnl_link_af_ops in link_msg_parser() 77b4f68 rtnl/route: only consider negative error codes as error 6870ece lib: cleanup nla_parse() to return early on error a858a0b lib: use _nl_strncpy*() instead of plain strncpy() 018c694 lib: cleanup _nl_strncpy_assert() e97b990 lib: rename _nl_strncpy() to _nl_strncpy_assert() 5ffbc6f lib: add _NL_RETURN_*() helper macros abb7391 lib: add "include/netlink-private/nl-auto.h" header ecd15bc lib: add _nl_assert_not_reached() 9cc38dc lib/route: adjust coding style 01ea9a6 route/link: Check for null pointer in macvlan Signed-off-by: Nick Hainke <vincent@systemli.org>
* libnl: cleanup makefileNick Hainke2022-07-031-4/+4
| | | | | | | - Add PKG_LICENSE_FILES. - Use SPDX. Signed-off-by: Nick Hainke <vincent@systemli.org>
* libnl: update to 3.5.0DENG Qingfang2019-11-013-211/+4
| | | | | | Update libnl to 3.5.0 Signed-off-by: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
* treewide: revise library packagingJo-Philipp Wich2019-01-241-9/+6
| | | | | | | | | | | - Annotate versionless libraries (such as libubox, libuci etc.) with a fixed ABI_VERSION resembling the source date of the last incompatible change - Annotate packages shipping versioned library objects with ABI_VERSION - Stop shipping unversioned library symlinks for packages with ABI_VERSION Ref: https://openwrt.org/docs/guide-developer/package-policies#shared_libraries Ref: https://github.com/KanjiMonster/maintainer-tools/blob/master/check-abi-versions.pl Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* libnl: bump to 3.4.0Konstantin Demin2018-07-074-31/+15
| | | | | | refresh patches Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
* libnl: Disable debug supportHauke Mehrtens2018-04-301-0/+3
| | | | | | | | | | | | | | | | | | | This dereses the size of the libnl pakcage a little bit old: 857 bin/packages/mips_24kc/base/libnl_3.4.0-1_mips_24kc.ipk 41195 bin/packages/mips_24kc/base/libnl-core_3.4.0-1_mips_24kc.ipk 7818 bin/packages/mips_24kc/base/libnl-genl_3.4.0-1_mips_24kc.ipk 24322 bin/packages/mips_24kc/base/libnl-nf_3.4.0-1_mips_24kc.ipk 136075 bin/packages/mips_24kc/base/libnl-route_3.4.0-1_mips_24kc.ipk new: 852 bin/packages/mips_24kc/base/libnl_3.4.0-1_mips_24kc.ipk 35020 bin/packages/mips_24kc/base/libnl-core_3.4.0-1_mips_24kc.ipk 7615 bin/packages/mips_24kc/base/libnl-genl_3.4.0-1_mips_24kc.ipk 24114 bin/packages/mips_24kc/base/libnl-nf_3.4.0-1_mips_24kc.ipk 131134 bin/packages/mips_24kc/base/libnl-route_3.4.0-1_mips_24kc.ipk Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* libs/libnl: Update to 3.3.0Daniel Engberg2017-10-155-115/+254
| | | | | | | | | | Update libnl to 3.3.0 Import patches to fix compilation Source: https://git.busybox.net/buildroot/tree/package/libnl Source: https://gitweb.gentoo.org/proj/musl.git/diff/dev-libs/libnl/files/libnl-3.3.0_rc1-musl.patch?id=48d2a287 Use more automatic toolchain logic Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* libnl: Fix building with uClibcAlexey Brodkin2017-03-161-0/+105
| | | | | | | | | | | | | | | | | | | | uClibc doesn't implement strerror_l() and thus libnl starting from 3.2.29 couldn't be compiled with it any longer, see https://github.com/thom311/libnl/commit/6c2d111177e91184073c44f83d4a6182aaba06d7 To work-around that problem we'll just do a check on strerror_l() availability during configuration and if it's not there just fall back to locale-less strerror(). Patch for libnl is alreadfy merged upstream, see https://github.com/thom311/libnl/commit/e15966ac7f3b43df2acf869f98089762807d0568 and once the next libnl release happens this one must be removed from Lede/OpenWrt. Signed-off-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com> Cc: Felix Fietkau <nbd@nbd.name> Cc: John Crispin <john@phrozen.org> Cc: Daniel Engberg <daniel.engberg.lists@pyret.net>
* libnl: Update to 3.2.29Daniel Engberg2017-01-101-3/+3
| | | | | | Update libnl to 3.2.29 Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* treewide: clean up download hashesFelix Fietkau2016-12-161-1/+1
| | | | | | Replace *MD5SUM with *HASH, replace MD5 hashes with SHA256 Signed-off-by: Felix Fietkau <nbd@nbd.name>
* package/libs/libnl: Update to 3.2.28Daniel Engberg2016-10-152-16/+3
| | | | | | | Update to 3.2.28 Remove patch as its in upstream Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* libnl: fix warning with poll.h include on muslJohn Crispin2015-12-231-0/+13
| | | | | | | | | | | | Warning is: #warning redirecting incorrect #include <sys/poll.h> to <poll. Not a big issue. But it can be annoying when building with -Werror set. Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com> SVN-Revision: 48004
* libnl: fix URLLuka Perkov2015-10-111-1/+1
| | | | | | Signed-off-by: Baptiste Jonglez <git@bitsofnetworks.org> SVN-Revision: 47183
* libnl: Install include files into libnl3Felix Fietkau2015-10-021-2/+2
| | | | | | | | | Install header files into same location as pkgconfig/libnl-3.0.pc says: Cflags: -I${includedir}/libnl3 Signed-off-by: Bruno Randolf <br1@einfach.org> SVN-Revision: 47102
* libnl: split libnl into smaller librariesFelix Fietkau2015-09-241-13/+88
| | | | | | | | | | | | | | Some modules may require only libnl-genl, some libnl-route and fewer would require libnl-nf. This patch splits the entire libnl package into smaller more granular libs that can be installed individually as required. Also added libnl*.so symlinks for convenience. Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com> SVN-Revision: 47037
* license info - revert r43155John Crispin2014-11-031-3/+0
| | | | | | | | turns out that r43155 adds duplicate info. Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 43167
* Add more license tags with SPDX identifiersJohn Crispin2014-11-031-0/+3
| | | | | | | | | | | | | | | | | | Note, that licensing stuff is a nightmare: many packages does not clearly state their licenses, and often multiple source files are simply copied together - each with different licensing information in the file headers. I tried hard to ensure, that the license information extracted into the OpenWRT's makefiles fit the "spirit" of the packages, e.g. such small packages which come without a dedicated source archive "inherites" the OpenWRT's own license in my opinion. However, I can not garantee that I always picked the correct information and/or did not miss license information. Signed-off-by: Michael Heimpold <mhei@heimpold.de> SVN-Revision: 43155
* Add a few SPDX tagsSteven Barth2014-11-021-0/+1
| | | | | | Signed-off-by: Steven Barth <steven@midlink.org> SVN-Revision: 43151
* libnl: update to 3.2.21Jonas Gorski2013-04-233-54/+8
| | | | | | Signed-off-by: Russell Senior <russell@personaltelco.net> SVN-Revision: 36394
* move library packages to package/libs/Felix Fietkau2012-10-083-0/+102
SVN-Revision: 33657