![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
Hello community, here is the log from the commit of package net-snmp for openSUSE:Factory checked in at 2018-02-02 22:21:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/net-snmp (Old) and /work/SRC/openSUSE:Factory/.net-snmp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "net-snmp" Fri Feb 2 22:21:04 2018 rev:84 rq:571968 version:5.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/net-snmp/net-snmp.changes 2017-12-21 11:23:45.491889719 +0100 +++ /work/SRC/openSUSE:Factory/.net-snmp.new/net-snmp.changes 2018-02-02 22:21:06.785150408 +0100 @@ -1,0 +2,37 @@ +Thu Feb 1 23:15:44 UTC 2018 - jengelh@inai.de + +- Fix RPM group for shlib subpackage. + +------------------------------------------------------------------- +Wed Jan 24 14:07:16 UTC 2018 - tchvatal@suse.com + +- Properly conditionalize the py2 build + +------------------------------------------------------------------- +Wed Jan 24 13:09:36 UTC 2018 - tchvatal@suse.com + +- Add patch from Fedora to support natively systemd: + * net-snmp-5.7.2-systemd.patch +- Drop the check phase as whole 90% of the tests fail it makes + more sense to run them somewhere localy + +------------------------------------------------------------------- +Mon Jan 22 12:24:33 UTC 2018 - tchvatal@suse.com + +- Take systemd service files from fedora to replace sysV scripts +- Also convert the sysconfig files to match fedora ones, they + get bit more terse but it works seamlessly with systemd + +------------------------------------------------------------------- +Fri Jan 19 17:36:38 UTC 2018 - tchvatal@suse.com + +- Format with spec-cleaner +- Drop sle11 support as it fails to build anyway for ages +- Rename python packages to be python-%{name} with obsoletes + * Use new singlespec macros + * Add patch converting the py files to python3/2 compat mode + net-snmp-python3.patch +- Run full autoreconf instead of partial +- Build with threads by building few targets first + +------------------------------------------------------------------- Old: ---- net-snmp.sysconfig rc.snmpd rc.snmptrapd New: ---- net-snmp-5.7.2-systemd.patch net-snmp-python3.patch net-snmp-tmpfs.conf snmpd.service snmpd.sysconfig snmptrapd.service snmptrapd.sysconfig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ net-snmp.spec ++++++ --- /var/tmp/diff_new_pack.AEDqol/_old 2018-02-02 22:21:08.373076275 +0100 +++ /var/tmp/diff_new_pack.AEDqol/_new 2018-02-02 22:21:08.377076088 +0100 @@ -1,7 +1,7 @@ # # spec file for package net-snmp # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,58 +16,38 @@ # -#Compat macro for new _fillupdir macro introduced in Nov 2017 +%{?!python_module:%define python_module() python-%{**} python3-%{**}} +%define netsnmp_logfile %{_localstatedir}/log/net-snmpd.log +%define netsnmp_agentx_socket_dir_fhs %{_rundir}/agentx +%define netsnmp_agentx_socket_dir_rfc %{_localstatedir}/agentx +# Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} - %define _fillupdir /var/adm/fillup-templates + %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif - -# compatibility for SLES11 <=SP1 -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} -%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} - -%define pkg_name net-snmp %ifnarch s390 s390x %define netsnmp_with_sensors 1 %endif -%define netsnmp_check 1 -%define netsnmp_logfile /var/log/net-snmpd.log -%if ! %{defined _rundir} -%define _rundir %{_localstatedir}/run -%endif -%define netsnmp_agentx_socket_dir_fhs %{_rundir}/agentx -%define netsnmp_agentx_socket_dir_rfc /var/agentx - +%define libname libsnmp30 +%bcond_without python2 Name: net-snmp Version: 5.7.3 Release: 0 -BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: autoconf -BuildRequires: automake -BuildRequires: openssl-devel -BuildRequires: procps -BuildRequires: python-devel -BuildRequires: python-setuptools -BuildRequires: rpm-devel -BuildRequires: tcpd-devel -%if 0%{?netsnmp_with_sensors} -BuildRequires: libsensors4-devel -%endif -Requires: logrotate -Requires: perl-SNMP = %{version} -Requires: perl-TermReadKey -PreReq: %insserv_prereq %fillup_prereq /sbin/chkconfig +Summary: SNMP Daemon +License: BSD-3-Clause AND MIT +Group: Productivity/Networking/Other Url: http://sourceforge.net/projects/net-snmp -#Source: http://sourceforge.net/projects/net-snmp/files/net-snmp/%{version}/%{pkg_name}-%{version}.tar.gz -Source: %{pkg_name}-%{version}.tar.gz -Source1: rc.snmpd +Source: http://sourceforge.net/projects/net-snmp/files/net-snmp/%{version}/%{name}-%{version}.tar.gz +Source1: snmpd.service Source2: snmpd.conf Source3: README.SUSE -Source4: rc.snmptrapd +Source4: snmptrapd.service Source5: net-snmp.logrotate Source6: test_installed -Source7: net-snmp.sysconfig -Source8: net-snmp-rpmlintrc -Source9: baselibs.conf +Source10: snmpd.sysconfig +Source11: snmptrapd.sysconfig +Source20: net-snmp-tmpfs.conf +Source98: net-snmp-rpmlintrc +Source99: baselibs.conf Patch1: net-snmp-5.7.3-socket-path.patch Patch2: net-snmp-5.7.3-testing-empty-arptable.patch Patch3: net-snmp-5.7.3-pie.patch @@ -82,10 +62,27 @@ Patch12: net-snmp-5.7.3-Fix-Makefile.PL.patch Patch13: net-snmp-5.7.3-build-with-openssl-1.1.patch Patch14: net-snmp-5.7.3-modern-rpm-api.patch -# -Summary: SNMP Daemon -License: BSD-3-Clause and MIT -Group: Productivity/Networking/Other +Patch15: net-snmp-python3.patch +Patch16: net-snmp-5.7.2-systemd.patch +BuildRequires: %{python_module devel} +BuildRequires: %{python_module setuptools} +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: openssl-devel +BuildRequires: procps +BuildRequires: python-rpm-macros +BuildRequires: rpm-devel +BuildRequires: systemd-rpm-macros +BuildRequires: tcpd-devel +Requires: logrotate +Requires: perl-SNMP = %{version} +Requires: perl-TermReadKey +Requires(post): %fillup_prereq +%if 0%{?netsnmp_with_sensors} +BuildRequires: libsensors4-devel +%endif +%{?systemd_requires} %description Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c @@ -103,18 +100,14 @@ renamed from cmu-snmp to ucd-snmp in 1995 and later renamed from ucd-snmp to net-snmp in November 2000. - -%define library_name libsnmp30 - -%package -n libsnmp30 +%package -n %{libname} +Summary: Shared Libraries from net-snmp +License: BSD-3-Clause AND MIT +Group: System/Libraries Requires: perl-base = %{perl_version} Requires: snmp-mibs = %{version} -# -Summary: Shared Libraries from net-snmp -License: BSD-3-Clause and MIT -Group: Productivity/Networking/Other -%description -n libsnmp30 +%description -n %{libname} Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6. The suite includes: @@ -129,7 +122,10 @@ This package holds the shared libraries from the net-snmp package. %package devel -Requires: %{library_name} = %{version} +Summary: Development files from net-snmp +License: BSD-3-Clause AND MIT +Group: Development/Libraries/C and C++ +Requires: %{libname} = %{version} # for mib2c Requires: perl Requires: perl-SNMP = %{version} @@ -140,10 +136,6 @@ %if 0%{?netsnmp_with_sensors} Requires: libsensors4-devel %endif -# -Summary: Development files from net-snmp -License: BSD-3-Clause and MIT -Group: Development/Libraries/C and C++ %description devel Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c @@ -160,11 +152,9 @@ This package holds the development headers, libraries and API documentation from the net-snmp package. - %package -n snmp-mibs -# Summary: MIB files from net-snmp -License: BSD-3-Clause and MIT +License: BSD-3-Clause AND MIT Group: Productivity/Networking/Other %description -n snmp-mibs @@ -181,46 +171,44 @@ This package holds the MIB files from the net-snmp package. - %package -n perl-SNMP -Requires: %{pkg_name} = %{version} -Requires: perl-base = %{perl_version} -# Summary: Perl5 SNMP Extension Module License: GPL-2.0+ Group: Development/Libraries/Perl +Requires: %{name} = %{version} +Requires: perl-base = %{perl_version} %description -n perl-SNMP The Perl5 'SNMP' Extension Module v3.1.0 for the UCD SNMPv3 library. - -%package python +%package -n python2-%{name} Summary: The Python 'netsnmp' module for the Net-SNMP -License: BSD-3-Clause and MIT +License: BSD-3-Clause AND MIT Group: Development/Libraries/Python +Requires: %{libname} = %{version} +Provides: %{name}-python = %{version} +Obsoletes: %{name}-python < %{version} +Provides: python-%{name} = %{version} -%description python +%description -n python2-%{name} The 'netsnmp' module provides a full featured, tri-lingual SNMP (SNMPv3, SNMPv2c, SNMPv1) client API. The 'netsnmp' module internals rely on the Net-SNMP toolkit library. +%package -n python3-%{name} +Summary: The Python 3 'netsnmp' module for the Net-SNMP +License: BSD-3-Clause AND MIT +Group: Development/Libraries/Python +Requires: %{libname} = %{version} + +%description -n python3-%{name} +The 'netsnmp' module provides a full featured, tri-lingual SNMP (SNMPv3, +SNMPv2c, SNMPv1) client API. The 'netsnmp' module internals rely on the +Net-SNMP toolkit library. %prep -%setup -q -n %{pkg_name}-%{version} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 +%setup -q +%autopatch -p1 %build MIBS="misc/ipfwacc ucd-snmp/diskio etherlike-mib rmon-mib velocity smux \ @@ -232,14 +220,16 @@ MIBS="$MIBS ucd-snmp/lmsensorsMib" %endif -autoreconf +autoreconf -fvi %configure \ --with-sys-contact="root@localhost" \ --with-sys-location="unknown" \ --with-mib-modules="$MIBS" \ - --with-cflags="%{optflags} -fstack-protector-all" \ - --with-persistent-directory="/var/lib/net-snmp" \ + --with-cflags="%{optflags}" \ + --with-ldflags="-Wl,-z,relro -Wl,-z,now" \ + --with-persistent-directory="%{_localstatedir}/lib/net-snmp" \ --with-agentx-socket="%{netsnmp_agentx_socket_dir_fhs}/master" \ + --with-temp-file-pattern=/var/run/net-snmp/snmp-tmp-XXXXXX \ --with-logfile="%{netsnmp_logfile}" \ --with-libwrap="%{_prefix}" \ --with-perl-modules="INSTALLDIRS=vendor" \ @@ -252,84 +242,78 @@ --enable-ipv6 \ --enable-ucd-snmp-compatibility \ --with-security-modules=tsm \ - --with-transports=TLSTCP,DTLSUDP + --with-transports=TLSTCP,DTLSUDP \ + --with-systemd -# Parallel building is disabled because dependencies between the Perl -# module and libnetsnmp are not correctly defined. -make #%{?_smp_mflags} +# Parallel build deps not properly stated +make -j1 pushd python -%{__python} setup.py --basedir="../" build +%python_exec setup.py build --basedir="../" popd -%check -%if 0%{?netsnmp_check} -%ifnarch %arm -ulimit -c unlimited -%{__make} test ||: -%{__make} test TESTOPTS='-P tcp' ||: -%endif -%{__make} perlmodules ||: -LD_RUN_PATH="$PWD/snmplib/.libs" LD_LIBRARY_PATH="${PWD}/snmplib/.libs:${PWD}/agent/.libs:${PWD}/agent/helpers/.libs" %{__make} perltest ||: -%endif - %install -%makeinstall INSTALL_PREFIX=%{buildroot} -%{__install} -Dd %{buildroot}/var/log %{buildroot}/var/lib/net-snmp %{buildroot}/usr/lib/net-snmp/agents %{buildroot}%{netsnmp_agentx_socket_dir_fhs} -%{__install} -D -m 0755 %{SOURCE1} %{buildroot}/etc/init.d/snmpd -%{__install} -D -m 0755 %{SOURCE4} %{buildroot}/etc/init.d/snmptrapd -%{__install} -D -m 0600 %{SOURCE2} %{buildroot}/etc/snmp/snmpd.conf -%{__install} -m 0644 %{SOURCE3} . -%{__install} -m 0644 %{SOURCE4} . -%{__install} -D -m 0644 %{SOURCE5} %{buildroot}/etc/logrotate.d/net-snmp -%{__install} -m 0744 %{SOURCE6} testing/ -%{__ln_s} -f /etc/init.d/snmpd %{buildroot}%{_sbindir}/rcsnmpd -%{__ln_s} -f /etc/init.d/snmptrapd %{buildroot}%{_sbindir}/rcsnmptrapd -%{__install} -m 0644 /dev/null %{buildroot}%{netsnmp_logfile} +%make_install INSTALL_PREFIX=%{buildroot} +install -Dd %{buildroot}%{_localstatedir}/log %{buildroot}%{_localstatedir}/lib/net-snmp %{buildroot}%{_libexecdir}/net-snmp/agents %{buildroot}%{netsnmp_agentx_socket_dir_fhs} +install -D -m 0755 %{SOURCE1} %{buildroot}%{_unitdir}/snmpd.service +install -D -m 0755 %{SOURCE4} %{buildroot}%{_unitdir}/snmptrapd.service +install -D -m 0600 %{SOURCE2} %{buildroot}%{_sysconfdir}/snmp/snmpd.conf +install -m 0644 %{SOURCE3} . +install -m 0644 %{SOURCE4} . +install -D -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/net-snmp +install -m 0744 %{SOURCE6} testing/ +ln -sf service %{buildroot}%{_sbindir}/rcsnmpd +ln -sf service %{buildroot}%{_sbindir}/rcsnmptrapd +install -m 0644 /dev/null %{buildroot}%{netsnmp_logfile} pushd perl %perl_make_install %perl_process_packlist - %{__rm} -f %{buildroot}/%{perl_vendorarch}/Bundle/Makefile.subs.pl + rm -f %{buildroot}/%{perl_vendorarch}/Bundle/Makefile.subs.pl popd pushd python -%{__python} setup.py install --prefix=%{_prefix} --root=%{buildroot} +%python_install popd -%{__grep} -a -v "^#define PACKAGE" %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h > \ +grep -a -v "^#define PACKAGE" %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h > \ %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h.new -%{__mv} %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h{.new,} -%{__install} -D -m 0644 %{S:7} \ - %{buildroot}%{_fillupdir}/sysconfig.%{pkg_name} +mv %{buildroot}%{_includedir}/net-snmp/net-snmp-config.h{.new,} +install -D -m 0644 %{SOURCE10} %{buildroot}%{_fillupdir}/sysconfig.snmpd +install -D -m 0644 %{SOURCE11} %{buildroot}%{_fillupdir}/sysconfig.snmptrapd +# tmpfiles +install -m 755 -d $RPM_BUILD_ROOT/%{_tmpfilesdir} +install -m 644 %SOURCE20 $RPM_BUILD_ROOT/%{_tmpfilesdir}/net-snmp.conf # -%{__ln_s} -f %{netsnmp_agentx_socket_dir_fhs} %{buildroot}%{netsnmp_agentx_socket_dir_rfc} +ln -s -f %{netsnmp_agentx_socket_dir_fhs} %{buildroot}%{netsnmp_agentx_socket_dir_rfc} # -rm -f "%buildroot/%_libdir"/*.la +find %{buildroot} -type f -name "*.la" -delete -print -%preun -%stop_on_removal snmpd -%stop_on_removal snmptrapd +%pre +%service_add_pre snmpd.service snmptrapd.service %post /sbin/chkconfig -c snmpd 2> /dev/null && FIRST_ARG=2 -%{fillup_only} +%fillup_only snmpd +%fillup_only snmptrapd +%tmpfiles_create %{_tmpfilesdir}/net-snmp.conf +%service_add_post snmpd.service snmptrapd.service -%postun -%restart_on_update snmpd -%restart_on_update snmptrapd -%{insserv_cleanup} +%preun +%service_del_preun snmpd.service snmptrapd.service -%post -n %{library_name} -p /sbin/ldconfig +%postun +%service_del_postun snmpd.service snmptrapd.service -%postun -n %{library_name} -p /sbin/ldconfig +%post -n %{libname} -p /sbin/ldconfig +%postun -n %{libname} -p /sbin/ldconfig %files -%defattr(-,root,root) %doc AGENT.txt COPYING EXAMPLE.conf EXAMPLE.conf.def %doc FAQ NEWS TODO CHANGES %doc README README.agent-mibs README.agentx README.krb5 README.snmpv3 README.thread -%dir /etc/snmp -%config(noreplace) /etc/snmp/snmpd.conf -%config /etc/init.d/snmpd -%config /etc/init.d/snmptrapd +%dir %{_sysconfdir}/snmp +%config(noreplace) %{_sysconfdir}/snmp/snmpd.conf +%{_unitdir}/snmpd.service +%{_unitdir}/snmptrapd.service +%{_tmpfilesdir}/net-snmp.conf %{_bindir}/encode_keychange %{_bindir}/fixproc %{_bindir}/ipf-mod.pl @@ -359,32 +343,31 @@ %{_bindir}/net-snmp-cert %{_bindir}/agentxtrap %{_bindir}/snmp-bridge-mib -%dir %{_prefix}/lib/net-snmp -%dir %{_prefix}/lib/net-snmp/agents +%dir %{_libexecdir}/net-snmp +%dir %{_libexecdir}/net-snmp/agents %{_mandir}/man[158]/* %{_sbindir}/* -/var/lib/net-snmp +%{_localstatedir}/lib/net-snmp %dir %ghost %attr(700,root,root) %{netsnmp_agentx_socket_dir_fhs} %ghost %{netsnmp_logfile} -%config(noreplace) /etc/logrotate.d/net-snmp -%{_fillupdir}/sysconfig.%{pkg_name} +%config(noreplace) %{_sysconfdir}/logrotate.d/net-snmp +%{_fillupdir}/sysconfig.snmpd +%{_fillupdir}/sysconfig.snmptrapd %{netsnmp_agentx_socket_dir_rfc} %{_datadir}/snmp/snmpconf-data/ %{_datadir}/snmp/snmp_perl.pl %{_datadir}/snmp/snmp_perl_trapd.pl %files -n snmp-mibs -%defattr(-,root,root) %dir %{_datadir}/snmp %{_datadir}/snmp/mibs/ -%files -n %{library_name} -%defattr(-,root,root) +%files -n %{libname} +%license COPYING %{_libdir}/libsnmp*.so.* %{_libdir}/libnetsnmp*.so.* %files devel -%defattr(-,root,root) %doc ChangeLog PORTING %{_mandir}/man3/* %{_includedir}/ucd-snmp @@ -396,20 +379,21 @@ %{_datadir}/snmp/mib2c* %files -n perl-SNMP -%defattr(-,root,root) %{perl_vendorarch}/auto/SNMP %{perl_vendorarch}/auto/NetSNMP %{perl_vendorarch}/auto/Bundle %{perl_vendorarch}/SNMP.pm %{perl_vendorarch}/NetSNMP %{_bindir}/tkmib -%if 0%{?suse_version} <= 1130 -/var/adm/perl-modules/net-snmp + +%if %{with python2} +%files -n python2-%{name} +%doc README +%{python2_sitearch}/* %endif -%files python -%defattr(-,root,root) +%files -n python3-%{name} %doc README -%{python_sitearch}/* +%{python3_sitearch}/* %changelog ++++++ net-snmp-5.7.2-systemd.patch ++++++ ++++ 1650 lines (skipped) ++++++ net-snmp-python3.patch ++++++ Index: net-snmp-5.7.3/python/setup.py =================================================================== --- net-snmp-5.7.3.orig/python/setup.py +++ net-snmp-5.7.3/python/setup.py @@ -9,9 +9,9 @@ intree=0 args = sys.argv[:] for arg in args: - if string.find(arg,'--basedir=') == 0: - basedir = string.split(arg,'=')[1] - sys.argv.remove(arg) + if arg.find('--basedir=') == 0: + basedir = arg.split('=')[1] + sys.argv.remove(arg) intree=1 if intree: Index: net-snmp-5.7.3/python/netsnmp/client.py =================================================================== --- net-snmp-5.7.3.orig/python/netsnmp/client.py +++ net-snmp-5.7.3/python/netsnmp/client.py @@ -1,3 +1,4 @@ +from __future__ import print_function import client_intf import string import re @@ -35,12 +36,12 @@ def _parse_session_args(kargs): 'TheirHostname':'', 'TrustCert':'' } - keys = kargs.keys() + keys = list(kargs.keys()) for key in keys: - if sessArgs.has_key(key): + if key in sessArgs: sessArgs[key] = kargs[key] else: - print >>stderr, "ERROR: unknown key", key + print("ERROR: unknown key", key, file=stderr) return sessArgs def STR(obj): @@ -127,7 +128,7 @@ class Session(object): sess_args = _parse_session_args(args) - for k,v in sess_args.items(): + for k,v in list(sess_args.items()): self.__dict__[k] = v Index: net-snmp-5.7.3/python/netsnmp/tests/test.py =================================================================== --- net-snmp-5.7.3.orig/python/netsnmp/tests/test.py +++ net-snmp-5.7.3/python/netsnmp/tests/test.py @@ -8,7 +8,7 @@ import time class BasicTests(unittest.TestCase): def testFuncs(self): - print "" + print("") var = netsnmp.Varbind('sysDescr.0') var = netsnmp.Varbind('sysDescr','0') var = netsnmp.Varbind( @@ -19,67 +19,67 @@ class BasicTests(unittest.TestCase): var = netsnmp.Varbind('.1.3.6.1.2.1.1.1','0') - print "---v1 GET tests -------------------------------------\n" + print("---v1 GET tests -------------------------------------\n") res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpget result: ", res, "\n" + print("v1 snmpget result: ", res, "\n") - print "v1 get var: ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print("v1 get var: ", var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v1 GETNEXT tests-------------------------------------\n" + print("---v1 GETNEXT tests-------------------------------------\n") res = netsnmp.snmpgetnext(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpgetnext result: ", res, "\n" + print("v1 snmpgetnext result: ", res, "\n") - print "v1 getnext var: ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print("v1 getnext var: ", var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v1 SET tests-------------------------------------\n" + print("---v1 SET tests-------------------------------------\n") var = netsnmp.Varbind('sysLocation','0', 'my new location') res = netsnmp.snmpset(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpset result: ", res, "\n" + print("v1 snmpset result: ", res, "\n") - print "v1 set var: ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print("v1 set var: ", var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v1 walk tests-------------------------------------\n" + print("---v1 walk tests-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) - print "v1 varlist walk in: " + print("v1 varlist walk in: ") for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print(" ",var.tag, var.iid, "=", var.val, '(',var.type,')') res = netsnmp.snmpwalk(vars, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpwalk result: ", res, "\n" + print("v1 snmpwalk result: ", res, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print(var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v1 walk 2-------------------------------------\n" + print("---v1 walk 2-------------------------------------\n") - print "v1 varbind walk in: " + print("v1 varbind walk in: ") var = netsnmp.Varbind('system') res = netsnmp.snmpwalk(var, Version = 1, DestHost='localhost', Community='public') - print "v1 snmpwalk result (should be = orig): ", res, "\n" + print("v1 snmpwalk result (should be = orig): ", res, "\n") - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print(var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v1 multi-varbind test-------------------------------------\n" + print("---v1 multi-varbind test-------------------------------------\n") sess = netsnmp.Session(Version=1, DestHost='localhost', Community='public') @@ -88,16 +88,16 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysContact', 0), netsnmp.Varbind('sysLocation', 0)) vals = sess.get(vars) - print "v1 sess.get result: ", vals, "\n" + print("v1 sess.get result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print(var.tag, var.iid, "=", var.val, '(',var.type,')') vals = sess.getnext(vars) - print "v1 sess.getnext result: ", vals, "\n" + print("v1 sess.getnext result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print(var.tag, var.iid, "=", var.val, '(',var.type,')') vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'), netsnmp.Varbind('sysORLastChange'), @@ -106,28 +106,28 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysORUpTime')) vals = sess.getbulk(2, 8, vars) - print "v1 sess.getbulk result: ", vals, "\n" + print("v1 sess.getbulk result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' + print(var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v1 set2-------------------------------------\n" + print("---v1 set2-------------------------------------\n") vars = netsnmp.VarList( netsnmp.Varbind('sysLocation', '0', 'my newer location')) res = sess.set(vars) - print "v1 sess.set result: ", res, "\n" + print("v1 sess.set result: ", res, "\n") - print "---v1 walk3-------------------------------------\n" + print("---v1 walk3-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) vals = sess.walk(vars) - print "v1 sess.walk result: ", vals, "\n" + print("v1 sess.walk result: ", vals, "\n") for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print(" ",var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v2c get-------------------------------------\n" + print("---v2c get-------------------------------------\n") sess = netsnmp.Session(Version=2, DestHost='localhost', @@ -140,22 +140,22 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysContact', 0), netsnmp.Varbind('sysLocation', 0)) vals = sess.get(vars) - print "v2 sess.get result: ", vals, "\n" + print("v2 sess.get result: ", vals, "\n") - print "---v2c getnext-------------------------------------\n" + print("---v2c getnext-------------------------------------\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") vals = sess.getnext(vars) - print "v2 sess.getnext result: ", vals, "\n" + print("v2 sess.getnext result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") - print "---v2c getbulk-------------------------------------\n" + print("---v2c getbulk-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'), netsnmp.Varbind('sysORLastChange'), @@ -164,30 +164,30 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysORUpTime')) vals = sess.getbulk(2, 8, vars) - print "v2 sess.getbulk result: ", vals, "\n" + print("v2 sess.getbulk result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") - print "---v2c set-------------------------------------\n" + print("---v2c set-------------------------------------\n") vars = netsnmp.VarList( netsnmp.Varbind('sysLocation','0','my even newer location')) res = sess.set(vars) - print "v2 sess.set result: ", res, "\n" + print("v2 sess.set result: ", res, "\n") - print "---v2c walk-------------------------------------\n" + print("---v2c walk-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) vals = sess.walk(vars) - print "v2 sess.walk result: ", vals, "\n" + print("v2 sess.walk result: ", vals, "\n") for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print(" ",var.tag, var.iid, "=", var.val, '(',var.type,')') - print "---v3 setup-------------------------------------\n" + print("---v3 setup-------------------------------------\n") sess = netsnmp.Session(Version=3, DestHost='localhost', SecLevel='authPriv', @@ -200,22 +200,22 @@ class BasicTests(unittest.TestCase): vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime', 0), netsnmp.Varbind('sysContact', 0), netsnmp.Varbind('sysLocation', 0)) - print "---v3 get-------------------------------------\n" + print("---v3 get-------------------------------------\n") vals = sess.get(vars) - print "v3 sess.get result: ", vals, "\n" + print("v3 sess.get result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") - print "---v3 getnext-------------------------------------\n" + print("---v3 getnext-------------------------------------\n") vals = sess.getnext(vars) - print "v3 sess.getnext result: ", vals, "\n" + print("v3 sess.getnext result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") vars = netsnmp.VarList(netsnmp.Varbind('sysUpTime'), netsnmp.Varbind('sysORLastChange'), @@ -224,37 +224,37 @@ class BasicTests(unittest.TestCase): netsnmp.Varbind('sysORUpTime')) vals = sess.getbulk(2, 8, vars) - print "v3 sess.getbulk result: ", vals, "\n" + print("v3 sess.getbulk result: ", vals, "\n") for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") - print "---v3 set-------------------------------------\n" + print("---v3 set-------------------------------------\n") vars = netsnmp.VarList( netsnmp.Varbind('sysLocation','0', 'my final destination')) res = sess.set(vars) - print "v3 sess.set result: ", res, "\n" + print("v3 sess.set result: ", res, "\n") - print "---v3 walk-------------------------------------\n" + print("---v3 walk-------------------------------------\n") vars = netsnmp.VarList(netsnmp.Varbind('system')) vals = sess.walk(vars) - print "v3 sess.walk result: ", vals, "\n" + print("v3 sess.walk result: ", vals, "\n") for var in vars: - print " ",var.tag, var.iid, "=", var.val, '(',var.type,')' + print(" ",var.tag, var.iid, "=", var.val, '(',var.type,')') class SetTests(unittest.TestCase): def testFuncs(self): - print "\n-------------- SET Test Start ----------------------------\n" + print("\n-------------- SET Test Start ----------------------------\n") var = netsnmp.Varbind('sysUpTime','0') res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "uptime = ", res[0] + print("uptime = ", res[0]) var = netsnmp.Varbind('versionRestartAgent','0', 1) @@ -264,19 +264,19 @@ class SetTests(unittest.TestCase): var = netsnmp.Varbind('sysUpTime','0') res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "uptime = ", res[0] + print("uptime = ", res[0]) var = netsnmp.Varbind('nsCacheEntry') res = netsnmp.snmpgetnext(var, Version = 1, DestHost='localhost', Community='public') - print "var = ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print("var = ", var.tag, var.iid, "=", var.val, '(',var.type,')') var.val = 65 res = netsnmp.snmpset(var, Version = 1, DestHost='localhost', Community='public') res = netsnmp.snmpget(var, Version = 1, DestHost='localhost', Community='public') - print "var = ", var.tag, var.iid, "=", var.val, '(',var.type,')' + print("var = ", var.tag, var.iid, "=", var.val, '(',var.type,')') sess = netsnmp.Session(Version = 1, DestHost='localhost', Community='public') @@ -286,7 +286,7 @@ class SetTests(unittest.TestCase): netsnmp.Varbind('.1.3.6.1.6.3.12.1.2.1.9.116.101.115.116','', 4)) res = sess.set(vars) - print "res = ", res + print("res = ", res) vars = netsnmp.VarList(netsnmp.Varbind('snmpTargetAddrTDomain'), netsnmp.Varbind('snmpTargetAddrTAddress'), @@ -295,14 +295,14 @@ class SetTests(unittest.TestCase): res = sess.getnext(vars) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") vars = netsnmp.VarList(netsnmp.Varbind('.1.3.6.1.6.3.12.1.2.1.9.116.101.115.116','', 6)) res = sess.set(vars) - print "res = ", res + print("res = ", res) vars = netsnmp.VarList(netsnmp.Varbind('snmpTargetAddrTDomain'), netsnmp.Varbind('snmpTargetAddrTAddress'), @@ -311,10 +311,10 @@ class SetTests(unittest.TestCase): res = sess.getnext(vars) for var in vars: - print var.tag, var.iid, "=", var.val, '(',var.type,')' - print "\n" + print(var.tag, var.iid, "=", var.val, '(',var.type,')') + print("\n") - print "\n-------------- SET Test End ----------------------------\n" + print("\n-------------- SET Test End ----------------------------\n") if __name__=='__main__': Index: net-snmp-5.7.3/python/netsnmp/client_intf.c =================================================================== --- net-snmp-5.7.3.orig/python/netsnmp/client_intf.c +++ net-snmp-5.7.3/python/netsnmp/client_intf.c @@ -979,7 +979,11 @@ py_netsnmp_attr_string(PyObject *obj, ch PyObject *attr = PyObject_GetAttrString(obj, attr_name); if (attr) { int retval; +#if PY_MAJOR_VERSION >= 3 + retval = PyBytes_AsStringAndSize(attr, val, len); +#else retval = PyString_AsStringAndSize(attr, val, len); +#endif Py_DECREF(attr); return retval; } @@ -996,7 +1000,11 @@ py_netsnmp_attr_long(PyObject *obj, char if (obj && attr_name && PyObject_HasAttrString(obj, attr_name)) { PyObject *attr = PyObject_GetAttrString(obj, attr_name); if (attr) { +#if PY_MAJOR_VERSION >= 3 + val = PyLong_AsLong(attr); +#else val = PyInt_AsLong(attr); +#endif Py_DECREF(attr); } } @@ -1079,11 +1087,19 @@ __py_netsnmp_update_session_errors(PyObj py_netsnmp_attr_set_string(session, "ErrorStr", err_str, STRLEN(err_str)); +#if PY_MAJOR_VERSION >= 3 + tmp_for_conversion = PyLong_FromLong(err_num); +#else tmp_for_conversion = PyInt_FromLong(err_num); +#endif PyObject_SetAttrString(session, "ErrorNum", tmp_for_conversion); Py_DECREF(tmp_for_conversion); +#if PY_MAJOR_VERSION >= 3 + tmp_for_conversion = PyLong_FromLong(err_ind); +#else tmp_for_conversion = PyInt_FromLong(err_ind); +#endif PyObject_SetAttrString(session, "ErrorInd", tmp_for_conversion); Py_DECREF(tmp_for_conversion); } @@ -2607,13 +2623,28 @@ static PyMethodDef ClientMethods[] = { {NULL, NULL, 0, NULL} /* Sentinel */ }; +#if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef ClientModuleDef = { + PyModuleDef_HEAD_INIT, + "client_intf", + NULL, + -1, + ClientMethods, + NULL, + NULL, + NULL, + NULL +}; + +PyMODINIT_FUNC +PyInit_client_intf(void) +{ + return PyModule_Create(&ClientModuleDef); +} +#else PyMODINIT_FUNC initclient_intf(void) { (void) Py_InitModule("client_intf", ClientMethods); } - - - - - +#endif ++++++ net-snmp-tmpfs.conf ++++++ d /var/run/net-snmp 0755 root root ++++++ snmpd.service ++++++ [Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=syslog.target network.target [Service] Type=notify Environment=OPTIONS="-LS0-6d" EnvironmentFile=-/etc/sysconfig/snmpd ExecStart=/usr/sbin/snmpd $OPTIONS -f ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target ++++++ snmpd.sysconfig ++++++ ## Path: System/Net-SNMP ## Description: snmpd command line options ## Type: string ## Default: "" # # '-f' is implicitly added by snmptrapd systemd unit file # OPTIONS="-L60-6d" # OPTIONS="" ++++++ snmptrapd.service ++++++ [Unit] Description=Simple Network Management Protocol (SNMP) Trap Daemon. After=syslog.target network.target [Service] Type=notify Environment=OPTIONS="-Lsd" EnvironmentFile=-/etc/sysconfig/snmptrapd ExecStart=/usr/sbin/snmptrapd $OPTIONS -f ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target ++++++ snmptrapd.sysconfig ++++++ ## Path: System/Net-SNMP ## Description: snmptrapd command line options ## Type: string ## Default: "" # # '-f' is implicitly added by snmptrapd systemd unit file # OPTIONS="-Lsd" # OPTIONS=""