Import Upstream version 5.9.4+dfsg

This commit is contained in:
luoyaoming 2024-04-24 17:23:15 +08:00
parent 115daf9f5e
commit 720aed252f
1155 changed files with 56775 additions and 41191 deletions

View File

@ -1,20 +1,76 @@
image:
- Visual Studio 2017
- Ubuntu
- Ubuntu1604
- Ubuntu2004
- macos-monterey
- Visual Studio 2022
environment:
CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
matrix:
- BUILD: MSVCDYNAMIC64
- BUILD: MSVCSTATIC64
- BUILD: INSTALLER
- BUILD: MinGW32
- BUILD: MSYS2
- BUILD: MinGW64
- BUILD: Cygwin32
- BUILD: Cygwin64
matrix:
allow_failures:
- BUILD: MINGW64
exclude:
- image: Ubuntu
BUILD: MSVCSTATIC64
- image: Ubuntu
BUILD: INSTALLER
- image: Ubuntu
BUILD: MinGW32
- image: Ubuntu
BUILD: MSYS2
- image: Ubuntu
BUILD: MinGW64
- image: Ubuntu1604
BUILD: MSVCSTATIC64
- image: Ubuntu1604
BUILD: INSTALLER
- image: Ubuntu1604
BUILD: MinGW32
- image: Ubuntu1604
BUILD: MSYS2
- image: Ubuntu1604
BUILD: MinGW64
- image: Ubuntu2004
BUILD: MSVCSTATIC64
- image: Ubuntu2004
BUILD: INSTALLER
- image: Ubuntu2004
BUILD: MinGW32
- image: Ubuntu2004
BUILD: MSYS2
- image: Ubuntu2004
BUILD: MinGW64
- image: macos-monterey
BUILD: MSVCSTATIC64
- image: macos-monterey
BUILD: INSTALLER
- image: macos-monterey
BUILD: MinGW32
- image: macos-monterey
BUILD: MSYS2
- image: macos-monterey
BUILD: MinGW64
artifacts:
- path: installer
clone_depth: 5
install:
- cmd: 'ci\openssl.bat'
- sh: 'sudo ci/install.sh'
build_script:
- 'call "ci\build.bat"'
- cmd: 'ci\build.bat'
- sh: 'ci/build.sh'
test_script:
- cmd: 'ci\test.bat'
- sh: 'if [ $(uname) != Darwin ]; then ci/test.sh; fi'

11
.cirrus.yml Normal file
View File

@ -0,0 +1,11 @@
env:
CIRRUS_CLONE_DEPTH: 5
freebsd_instance:
image_family: freebsd-14-0-snap
image_family: freebsd-13-1
image_family: freebsd-13-0
task:
install_script: sudo ci/install.sh
script: ci/build.sh

29
.github/workflows/buildtest.yml vendored Normal file
View File

@ -0,0 +1,29 @@
# See also https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
name: Build and test
on: [push, pull_request]
jobs:
build_and_test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
mode: [regular, disable-set, mini, read-only, wolfssl]
env:
MODE: ${{ matrix.mode }}
steps:
- uses: actions/checkout@main
- name: install required packages
run: sudo bash -c "MODE=$MODE ci/install.sh"
- name: build
run: ci/build.sh
- name: test
run: ci/test.sh

77
.github/workflows/codechecker.yml vendored Normal file
View File

@ -0,0 +1,77 @@
name: CodeChecker
on: [workflow_dispatch]
#on:
# push:
# branches: [ master ]
jobs:
codechecker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: install required packages
run: sudo apt-get install libatm-dev libperl-dev libpopt-dev libsensors4-dev libssh2-1-dev libxml2-dev uuid-dev libkrb5-dev python3-setuptools
- name: install clang v12
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 12
sudo apt-get install clang clang-tidy
- name: install packages required by CodeChecker
run: |
sudo apt-get install doxygen gcc-multilib python-virtualenv
- name: install nodejs version 12.x
run: |
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get install nodejs
- name: install CodeChecker v6.14
run: |
git clone https://github.com/Ericsson/CodeChecker.git /opt/codechecker
git -C /opt/codechecker/ checkout -b b6.14.0 v6.14.0
make -C /opt/codechecker venv
. /opt/codechecker/venv/bin/activate
make -C /opt/codechecker package
- name: CodeChecker version
run: |
source /opt/codechecker/venv/bin/activate
export PATH=/opt/codechecker/build/CodeChecker/bin:$PATH;
CodeChecker version
- name: configure
run: MODE=regular; ci/net-snmp-configure ${GITHUB_REF##*/}
- name: Codechecker log
run: |
source /opt/codechecker/venv/bin/activate
export PATH=/opt/codechecker/build/CodeChecker/bin:$PATH
CodeChecker log -o codechecker-log.json -b "make"
- name: Codechecker analyze
run: |
source /opt/codechecker/venv/bin/activate
export PATH=/opt/codechecker/build/CodeChecker/bin:$PATH
echo "-*/conftest.c" > codechecker.skipfile
echo "-*/conftest.cpp" >> codechecker.skipfile
echo "-*/tmp.*.c" >> codechecker.skipfile
CodeChecker analyze -j $(nproc) --clean --skip codechecker.skipfile -o ./results --report-hash context-free-v2 codechecker-log.json
#CodeChecker analyze -j $(nproc) --clean --skip codechecker.skipfile --ctu -e sensitive -o ./results --report-hash context-free-v2 codechecker-log.json
- name: CodeChecker parse
run: |
source /opt/codechecker/venv/bin/activate;
export PATH=/opt/codechecker/build/CodeChecker/bin:$PATH
CodeChecker parse -e html ./results -o ./reports_html
- name: Archive CodeChecker results
uses: actions/upload-artifact@v2
with:
name: CodeChecker reports
path: reports_html

11
.gitignore vendored
View File

@ -1,4 +1,3 @@
*~
*.bak
*.bs
*.ft
@ -14,7 +13,9 @@
*.pdb
*.rej
*.swp
*~
.libs/
__pycache__
agent/*.exe
agent/mibgroup/agent_module_dot_conf.h
agent/mibgroup/agent_module_includes.h
@ -75,7 +76,6 @@ Makefile
man/*.[1358]
man/default_store.3.h
man/manaliases
mibs/.index
mk/
module_tmp_header.h
net-snmp-5*
@ -83,6 +83,8 @@ net-snmp-6*
net-snmp-config
net-snmp-config-x
net-snmp-create-v3-user
netsnmp-agent.pc
netsnmp.pc
NEWS.new*
perl/*.json
perl/*.yml
@ -99,7 +101,9 @@ perl/blib/
perl/default_store/default_store.c
perl/NetSNMP.c
perl/OID/OID.c
perl/OID/snmp.conf
perl/SNMP/SNMP.c
perl/SNMP/snmp.conf
perl/SNMP/t/*.log
perl/SNMP/t/*.pid
perl/SNMP/t/*.stderr
@ -109,6 +113,8 @@ perl/TrapReceiver/const-xs.inc
perl/TrapReceiver/TrapReceiver.c
pm_to_blib
python/build
python/netsnmp_python.egg-info/
python/netsnmp/client_intf.*.so
sedscript
snmplib/snmpsm_init.h
snmplib/snmpsm_shutdown.h
@ -117,6 +123,7 @@ stamp-h
TAGS
testing/failed_tests
testing/testing/
testing/fuzzing/
win32/*/debug
win32/*/release
win32/bin

View File

@ -1,39 +0,0 @@
language: c
os:
- linux
- osx
env:
- env: MODE=regular
- env: MODE=disable-set
- env: MODE=mini
- env: MODE=minimalist
- env: MODE=read-only
addons:
apt:
packages:
- dpkg
- gcc
- libatm-dev
- libperl-dev
- libsensors4-dev
- libssh-dev
- libssl-dev
- make
- perl-modules
- pkg-config
- python-dev
- python-setuptools
sudo: required
before_script:
# Add an IPv6 config - see the corresponding Travis issue
# https://github.com/travis-ci/travis-ci/issues/8361
- 'if [ "${TRAVIS_OS_NAME}" == "linux" ]; then sudo sh -c ''echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6; printf "\n::1 localhost ipv6-localhost ipv6-loopback\n" >>/etc/hosts; cat /etc/hosts''; fi'
# Upgrade openssl such that Net-SNMP can be built with Blumenthal AES support.
- 'if [ "${TRAVIS_OS_NAME}" == "osx" ]; then brew upgrade openssl >/dev/null 2>&1; fi'
script: ci/build.sh

182
CHANGES
View File

@ -3,6 +3,188 @@ that have been applied in released versions. Please see the NEWS file for
a summary of the major changes, and the ChangeLog file for a comprehensive
listing of all changes made to the code.
*5.9.4*:
IMPORTANT: SNMP over TLS and/or DTLS are not functioning properly
in this release with various versions of OpenSSL and will be fixed
in a future release.
libsnmp:
- Remove the SNMP_SWIPE_MEM() macro Remove this macro since it is not
used in the Net-SNMP code base.
- DISPLAY-HINT fixes
- Miscellanious improvements to the transports
- Handle multiple oldEngineID configuration lines
- fixes for DNS names longer than 63 characters
agent:
- Added a ignoremount configuration option for the HOST-MIB
- disallow SETs with a NULL varbind
- fix the --enable-minimalist build
apps:
- snmpset: allow SET with NULL varbind for testing
- snmptrapd: improved MySQL logging code
general:
- configure: Remove -Wno-deprecated as it is no longer needed
- miscellanious ther bug fixes, build fixes and cleanups
*5.9.3*:
security:
- These two CVEs can be exploited by a user with read-only credentials:
- CVE-2022-24805 A buffer overflow in the handling of the INDEX of
NET-SNMP-VACM-MIB can cause an out-of-bounds memory access.
- CVE-2022-24809 A malformed OID in a GET-NEXT to the nsVacmAccessTable
can cause a NULL pointer dereference.
- These CVEs can be exploited by a user with read-write credentials:
- CVE-2022-24806 Improper Input Validation when SETing malformed
OIDs in master agent and subagent simultaneously
- CVE-2022-24807 A malformed OID in a SET request to
SNMP-VIEW-BASED-ACM-MIB::vacmAccessTable can cause an
out-of-bounds memory access.
- CVE-2022-24808 A malformed OID in a SET request to
NET-SNMP-AGENT-MIB::nsLogTable can cause a NULL pointer dereference
- CVE-2022-24810 A malformed OID in a SET to the nsVacmAccessTable
can cause a NULL pointer dereference.
- To avoid these flaws, use strong SNMPv3 credentials and do not share them.
If you must use SNMPv1 or SNMPv2c, use a complex community string
and enhance the protection by restricting access to a given IP address range.
- Thanks are due to Yu Zhang of VARAS@IIE and Nanyu Zhong of VARAS@IIE for
reporting the following CVEs that have been fixed in this release, and
to Arista Networks for providing fixes.
Windows:
- WinExtDLL: Fix multiple compiler warnings
- WinExtDLL: Make long strings occupy a single line Make it easier to
look up error messages in the source code by making long strings
occupy a single source code line.
- WinExtDLL: Restore MIB-II support Make winExtDLL work on 64-bit
Windows systems") caused snmpd to skip MIB-II on 64-bit systems.
IF-MIB: Update ifTable entries even if the interface name has changed
At least on Linux a network interface index may be reused for a
network interface with a different name. Hence this patch that
enables replacing network interface information even if the network
interface name has changed.
unspecified:
- Moved transport code into a separate subdirectory in snmplib
- Snmplib: remove inline versions of container funcs".
misc:
- snmp-create-v3-user: Fix the snmpd.conf path @datadir@ is
expanded in ${datarootdir} so datarootdir must be set before
@datadir@ is used.
*5.9.2*:
security:
- These two CVEs can be exploited by a user with read-only credentials:
- CVE-2022-24805 A buffer overflow in the handling of the INDEX of
NET-SNMP-VACM-MIB can cause an out-of-bounds memory access.
- CVE-2022-24809 A malformed OID in a GET-NEXT to the nsVacmAccessTable
can cause a NULL pointer dereference.
- These CVEs can be exploited by a user with read-write credentials:
- CVE-2022-24806 Improper Input Validation when SETing malformed
OIDs in master agent and subagent simultaneously
- CVE-2022-24807 A malformed OID in a SET request to
SNMP-VIEW-BASED-ACM-MIB::vacmAccessTable can cause an
out-of-bounds memory access.
- CVE-2022-24808 A malformed OID in a SET request to
NET-SNMP-AGENT-MIB::nsLogTable can cause a NULL pointer dereference
- CVE-2022-24810 A malformed OID in a SET to the nsVacmAccessTable
can cause a NULL pointer dereference.
- To avoid these flaws, use strong SNMPv3 credentials and do not share them.
If you must use SNMPv1 or SNMPv2c, use a complex community string
and enhance the protection by restricting access to a given IP address range.
- Thanks are due to Yu Zhang of VARAS@IIE and Nanyu Zhong of VARAS@IIE for
reporting the following CVEs that have been fixed in this release, and
to Arista Networks for providing fixes.
Windows:
- WinExtDLL: Fix multiple compiler warnings
- WinExtDLL: Make long strings occupy a single line Make it easier to
look up error messages in the source code by making long strings
occupy a single source code line.
- WinExtDLL: Restore MIB-II support Make winExtDLL work on 64-bit
Windows systems") caused snmpd to skip MIB-II on 64-bit systems.
IF-MIB: Update ifTable entries even if the interface name has changed
At least on Linux a network interface index may be reused for a
network interface with a different name. Hence this patch that
enables replacing network interface information even if the network
interface name has changed.
unspecified:
- Moved transport code into a separate subdirectory in snmplib
- Snmplib: remove inline versions of container funcs".
misc:
- snmp-create-v3-user: Fix the snmpd.conf path @datadir@ is
expanded in ${datarootdir} so datarootdir must be set before
@datadir@ is used.
*5.9.1*:
General: Many bug fixes
*5.9*
snmplib:
- Add IPv6 support to DTLSUDP transport
- use new netsnmp_sockaddr_storage in netsnmp_addr_pair
- add base_transport ptr for tunneled transports
- Add support for OpenSSL 1.1.1
- Dtls: overhaul of debug
- Remove inline versions of container funcs
snmpd:
- Use ETHTOOL_GLINKSETTINGS when available Newer Linux kernels
support ETHTOOL_GLINKSETTINGS. Use it when available instead of the
older and deprecated ETHTOOL_GSET. This patch avoids that the Linux
kernel reports the following kernel warning: warning: 'snmpd' uses
legacy ethtool link settings API, link modes are only partially
reported See also https://sourceforge.net/p/net-snmp/patches/1387/.
[bvanassche: reworked this patch significantly]
- Reduce the time needed to execute "pass" scripts on BSD systems See
also https://github.com/net-snmp/net-snmp/issues/8.
- [BUG 2926]: Make it possible to set agentXPingInterval for a
subagent - register agentXPingInterval for the subagent list
handler, before it was registered for snmp - added agentxTimeout to
the subagent list handler. It's now possible to set for snmpd and
the subagent. See 'man snmpd.conf' - added agentxRetries to the
subagent list handler. See 'man snmpd.conf'. It's never used in the
subagent, but it's now following the documentation Signed-off-by:
Anders Wallin <wallinux@gmail.com>
snmptrap:
- BUG: 2899: Patch from Drew Roedersheimer to set library
engineboots/time values before sending
snmptrapd:
- Add support for the latest libmysqlclient version
libsnmp:
- Scan MIB directories in alphabetical order This guarantees that
e.g. mibs/RFC1213-MIB.txt is read before mibs/SNMPv2-MIB.txt. The
order in which these MIBs is read matters because both define
sysLocation but with different attributes.
unspecified:
- [BUG 2930]: Fix a Solaris hrSWInst crash Avoid that snmpd crashes
on Solaris when querying software packages with an empty CATEGORY
field. See also https://sourceforge.net/p/net-snmp/bugs/2930/. See
also https://sourceforge.net/p/net-snmp/patches/1390/.
FreeBSD:
- Fix first byte of IF-MIB::ifPhysAddress Don't write past the
interface name, and use temporary copy instead. This fixes the
first byte of ifPhysAddress always being 0 on FreeBSD. See also
https://sourceforge.net/p/net-snmp/code/merge-requests/20/. [
bvanassche: edited patch title / added test for malloc() result /
reduced number of free(if_name) calls ]
Win32:
- BUG: 2779541 Fixed handle leak in pass_persist.
*5.8*
snmplib:
- [BUG 3444939]: BUG: 1796886: snmplib: Avoid that

11021
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ agentAddress udp:127.0.0.1:161
# SNMPv3 AUTHENTICATION
#
# Note that these particular settings don't actually belong here.
# They should be copied to the file /var/lib/snmp/snmpd.conf
# They should be copied to the file /var/net-snmp/snmpd.conf
# and the passwords changed, before being uncommented in that file *only*.
# Then restart the agent
@ -49,8 +49,6 @@ view systemonly included .1.3.6.1.2.1.25.1
#rocommunity public localhost
# Default access to basic system info
rocommunity public default -V systemonly
# rocommunity6 is for IPv6
rocommunity6 public default -V systemonly
# Full access from an example network
# Adjust this network address to match your local
@ -65,7 +63,7 @@ view systemonly included .1.3.6.1.2.1.25.1
#rwuser authPrivUser priv
# It's no longer typically necessary to use the full 'com2sec/group/access' configuration
# r[ow]user and r[ow]community, together with suitable views, should cover most requirements
# r[ou]user and r[ow]community, together with suitable views, should cover most requirements

24
FAQ
View File

@ -1,7 +1,7 @@
Frequently Asked Questions (FAQ) for the UCD/Net-SNMP package
=============================================================
FAQ Author: Dave Shield
Net-SNMP Version: 5.8
Net-SNMP Version: 5.9.4
Net-SNMP/UCD-SNMP Project Leader: Wes Hardaker
Email: net-snmp-coders@lists.sourceforge.net
@ -108,7 +108,7 @@ TABLE OF CONTENTS
How do I configure access control?
How do I configure SNMPv3 users?
The 'createUser' line disappears when I start the agent. Why?
What's the difference between /var/lib/snmp and /usr/share/snmp?
What's the difference between /var/net-snmp and /usr/local/share/snmp?
My new agent is ignoring the old snmpd.conf file. Why?
Where should the snmpd.conf file go?
Why am I getting "Connection refused"?
@ -699,7 +699,7 @@ How do I add a MIB to the tools?
There are two steps required to add a new MIB file to the tools.
Firstly, copy the MIB file into the appropriate location:
cp MY-MIB.txt /usr/share/snmp/mibs
cp MY-MIB.txt /usr/local/share/snmp/mibs
(which makes it available to everyone on the system)
or
mkdir $HOME/.snmp
@ -1395,7 +1395,7 @@ My traphandler script doesn't work when run like this - why not?
If this is the case, then you can specify this interpreter
explicitly as part of the trap handle directive:
traphandle default /usr/bin/perl /usr/bin/log_it
traphandle default /usr/bin/perl /usr/local/bin/log_it
In this case, it's almost certain that you'll also
need to give the full path to the traphandle script (as shown)
@ -1489,7 +1489,7 @@ OK, what should I put in snmp.conf?
string to use.
Some of these (such as MIB information), might be best put in a
shared snmp.conf file (typically /usr/share/snmp/snmp.conf or
shared snmp.conf file (typically /usr/local/share/snmp/snmp.conf or
/etc/snmp/snmp.conf) to apply to all users of the system. Others
(particularly the SNMPv3 security settings), are more likely to refer
to a particular user, and should probably go in a personal snmp.conf
@ -2663,7 +2663,7 @@ How do I configure SNMPv3 users?
createUser {myUser} MD5 {myPassword} DES
to the file /var/lib/snmp/snmpd.conf (where {myUser} and
to the file /var/net-snmp/snmpd.conf (where {myUser} and
{myPassword} are the appropriate values for username and password,
_without_ the braces!). Then re-start the snmpd agent.
@ -2672,7 +2672,7 @@ How do I configure SNMPv3 users?
net-snmp-config --create-snmpv3-user
and follow the prompts given. This will create an entry
in the /var/lib/snmp/snmpd.conf file similar to the above.
in the /var/net-snmp/snmpd.conf file similar to the above.
Then re-start the snmpd agent.
3) Make sure the agent is running, and will respond to an SNMPv3
@ -2706,16 +2706,16 @@ The 'createUser' line disappears when I start the agent. Why?
What's the difference between /var/lib/snmp and /usr/share/snmp?
----------------------------------------------------------------
What's the difference between /var/net-snmp and /usr/local/share/snmp?
---------------------------------------------------------------------
The /var/lib/snmp location is primarily used for information set
The /var/net-snmp location is primarily used for information set
during the running of the agent, which needs to be persistent between
one run of the agent and the next. Apart from "createUser" (see
the previous entry), you shouldn't need to touch this file.
All other user-provided configuration should go in the traditional
location (typically /usr/share/snmp or /etc/snmp).
location (typically /usr/local/share/snmp/snmpd.conf or /etc/snmp).
@ -2736,7 +2736,7 @@ Where should the snmpd.conf file go?
-----------------------------------
The default location for this file with the basic distribution is
/usr/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
/usr/local/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
Ready-installed versions often look for the file as /etc/snmpd.conf,
or /etc/snmp/snmpd.conf.

View File

@ -127,7 +127,7 @@ Installing the Perl/SNMP Module
(which includes other Net-SNMP specific modules as well), all of which
are located in the net-snmp/perl directory. The Perl package provides
a high level abstract interface to the functionality found in the
Net-SNMP libraries and demon applications.
Net-SNMP libraries and daemon applications.
It is recommended you install the perl modules as you build the
Net-SNMP package. The configure script can be run as follows to

View File

@ -6,25 +6,24 @@
VPATH = @srcdir@
SUBDIRS = snmplib @MAINSUBS@
SUBDIRDEPS = sedscript
FTSUBDIRS = @FTMAINSUBS@ snmplib
TESTDIRS = testing
CPP = @CPP@ \
-Iinclude -I$(srcdir)/include -I$(srcdir)/agent/mibgroup -I. -I$(srcdir) \
-I$(srcdir)/include -I. \
-DDONT_INC_STRUCTS -DBINDIR=$(bindir) \
$(EXTRACPPFLAGS)
INSTALLHEADERS=version.h net-snmp-features.h
INCLUDESUBDIR=system
INCLUDESUBDIRHEADERS= aix.h bsd.h bsdi3.h bsdi4.h bsdi.h cygwin.h \
darwin.h darwin7.h darwin8.h darwin9.h darwin10.h darwin11.h darwin12.h \
darwin13.h darwin14.h darwin15.h darwin16.h darwin17.h \
dragonfly.h dynix.h \
darwin.h dragonfly.h dynix.h \
freebsd2.h freebsd3.h freebsd4.h freebsd5.h freebsd6.h \
freebsd7.h freebsd8.h freebsd9.h freebsd10.h freebsd11.h \
freebsd12.h freebsd.h kfreebsd.h \
freebsd12.h freebsd13.h freebsd14.h freebsd.h \
generic.h \
hpux.h irix.h linux.h mingw32.h mingw32msvc.h mips.h \
hpux.h irix.h kfreebsd.h linux.h mingw32.h mingw32msvc.h mips.h \
netbsd.h nto-qnx6.h osf5.h \
openbsd.h openbsd6.h openbsd5.h openbsd4.h \
solaris2.3.h solaris2.4.h solaris2.5.h solaris2.6.h \
@ -35,6 +34,7 @@ INSTALLBUILTHEADERS=include/net-snmp/net-snmp-config.h
INSTALLBUILTINCLUDEHEADERS=@FEATUREHEADERS@
INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user
INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h
INSTALL_PKGCONFIG=netsnmp.pc netsnmp-agent.pc
#
# other install rules.
@ -113,8 +113,8 @@ agentxtrap snmptrapd: @FEATURETARGS@
#
# local build rules
#
sedscript: sedscript.in include/net-snmp/net-snmp-config.h $(srcdir)/agent/mibgroup/mibdefs.h
$(CPP) $(CPPFLAGS) $(srcdir)/sedscript.in | egrep '^s[/#]' | sed 's/REMOVEME//g;s# */#/#g;s/ *#/#/g;s#/ *#/#g;s/# g/#g/;' > sedscript
sedscript: $(srcdir)/sedscript.in include/net-snmp/net-snmp-config.h $(srcdir)/agent/mibgroup/mibdefs.h
$(CPP) -I$(srcdir) -Iinclude $(srcdir)/sedscript.in | $(EGREP) '^s[/#]' | sed 's/REMOVEME//g;s# */#/#g;s/ *#/#/g;s#/ *#/#g;s/# g/#g/;' > sedscript
echo 's/VERSIONINFO/$(VERSION)/g' >> sedscript
echo 's#DATADIR#$(datadir)#g' >> sedscript
echo 's#LIBDIR#$(libdir)#g' >> sedscript
@ -122,14 +122,14 @@ sedscript: sedscript.in include/net-snmp/net-snmp-config.h $(srcdir)/agent/mibgr
echo 's#PERSISTENT_DIRECTORY#$(PERSISTENT_DIRECTORY)#g' >> sedscript
echo 's#SYSCONFDIR#@sysconfdir@#g' >> sedscript
EXAMPLE.conf: sedscript EXAMPLE.conf.def
EXAMPLE.conf: sedscript $(srcdir)/EXAMPLE.conf.def
$(SED) -f sedscript $(srcdir)/EXAMPLE.conf.def > EXAMPLE.conf
docs: docsdir
docsdir: docsdox
docsdox: doxygen.conf
docsdox: $(srcdir)/doxygen.conf
srcdir=$(srcdir) VERSION=$(VERSION) doxygen $(srcdir)/doxygen.conf
net-snmp-config-x: net-snmp-config
@ -173,14 +173,14 @@ OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pyt
#
# override LD_RUN_PATH to avoid dependencies on the build directory
perlmodules: perlmakefiles subdirs
@(cd perl ; $(MAKE) LD_RUN_PATH="") ; \
@(cd perl ; $(MAKE) LD_RUN_PATH="$(libdir):`$(PERL) -e 'use Config; print qq($$Config{archlibexp}/CORE);'`") ; \
if test $$? != 0 ; then \
exit 1 ; \
fi
perlmakefiles: perl/Makefile net-snmp-config-x
perl/Makefile: perl/Makefile.PL
perl/Makefile: perl/Makefile.PL subdirs
dir=`pwd` && \
cd perl && \
if false; then \
@ -275,6 +275,7 @@ configclean: makefileclean
libtool include/net-snmp/net-snmp-config.h \
net-snmp-config net-snmp-config-x configure-summary \
net-snmp-create-v3-user net-snmp-create-v3-user-x
rm -f *.pc
rm -f mibs/.index
rm -f include/net-snmp/agent/mib_module_config.h \
include/net-snmp/agent/agent_module_config.h \
@ -454,6 +455,16 @@ perlcalloccheck:
dist: tar
rpm: dist
rpmtopdir=$$PWD/rpmbuilddir && \
for d in BUILD RPMS SOURCES SPECS SRPMS; do \
mkdir -p $${rpmtopdir}/$$d; \
done && \
cp net-snmp-$(VERSION).tar.gz $${rpmtopdir}/SOURCES && \
MAKE="$(MAKE)" rpmbuild --define="%_topdir $${rpmtopdir}" \
-ba dist/net-snmp.spec && \
find $${rpmtopdir} -name '*rpm'
FAQ.html:
local/FAQ2HTML FAQ

View File

@ -23,21 +23,18 @@ $(FEATUREFILE): $(FTOBJS) $(top_builddir)/include/net-snmp/feature-details.h
cat $(FTOBJS) > $(FEATUREFILE).in
$(FEATUREPROCESS) $(FEATUREFILE) $(top_builddir)/include/net-snmp/feature-details.h @FEATURE_REMOVE_FLAGS@ @FEATURE_ADD_FLAGS@
ftsubdirs:
@if test "$(FTSUBDIRS)" != ""; then \
SUBDIRS="$(FTSUBDIRS)" ; \
else \
SUBDIRS="$(SUBDIRS)" ; \
fi ; \
if test "$$SUBDIRS" != ""; then \
it="$$SUBDIRS" ; \
for i in $$it ; do \
echo "making features in `pwd`/$$i"; \
( cd $$i ; $(MAKE) features ) ; \
if test $$? != 0 ; then \
exit 1 ; \
fi \
done \
fi
@if test "$(FTSUBDIRS)" != ""; then \
SUBDIRS="$(FTSUBDIRS)"; \
else \
SUBDIRS="$(SUBDIRS)"; \
fi; \
echo "$(PWD): making feature files in $${SUBDIRS}"; \
for i in $${SUBDIRS}; do \
test "$$i" != "" || continue; \
echo "making features in `pwd`/$$i"; \
(cd "$$i" && $(MAKE) features) || exit "$$?"; \
done; \
echo "$(PWD): finished making feature files."
.PHONY: cleanfeatures cleanfeaturessubdirs
cleanfeatures: cleanfeaturessubdirs
@ -70,7 +67,7 @@ cleanfeaturessubdirs:
> $(top_builddir)/include/net-snmp/feature-details.h
$(FEATURECHECK) --feature-global $(top_builddir)/include/net-snmp/feature-details.h $(mysubdir) $< $@ $(CC) -E $(CPPFLAGS) $(CFLAGS) -c
subdirs:
subdirs: $(SUBDIRDEPS)
@if test "$(SUBDIRS)" != ""; then \
it="$(SUBDIRS)" ; \
for i in $$it ; do \
@ -85,12 +82,14 @@ subdirs:
# installlibs handles local, ucd and subdir libs. need to do subdir libs
# before bins, sinze those libs may be needed for successful linking
install: installlocalheaders @installucdheaders@ \
installlibs \
installlocalbin installlocalsbin \
installlibs install_pkgconfig \
installlocalbin installlocalsbin \
installsubdirs $(OTHERINSTALL)
uninstall: uninstalllibs uninstallbin uninstallsbin uninstallheaders \
uninstallsubdirs $(OTHERUNINSTALL)
uninstall: uninstalllibs uninstall_pkgconfig \
uninstallbin uninstallsbin \
uninstallheaders \
uninstallsubdirs $(OTHERUNINSTALL)
installprogs: installbin installsbin
@ -287,6 +286,26 @@ uninstalllibs:
done \
fi
#
# pkg-config files
#
install_pkgconfig: $(INSTALL_PKGCONFIG)
@if test "x$(INSTALL_PKGCONFIG)" != x; then \
$(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(libdir)/pkgconfig; \
for i in $(INSTALL_PKGCONFIG); do \
echo "installing $$i in $(INSTALL_PREFIX)$(libdir)/pkgconfig"; \
done; \
$(INSTALL_DATA) $(INSTALL_PKGCONFIG) $(INSTALL_PREFIX)$(libdir)/pkgconfig; \
fi
uninstall_pkgconfig:
@if test "x$(INSTALL_PKGCONFIG)" != x; then \
for i in $(INSTALL_PKGCONFIG); do \
echo "removing $$i from $(INSTALL_PREFIX)$(libdir)/pkgconfig"; \
$(UNINSTALL) $(INSTALL_PREFIX)$(libdir)/pkgconfig/$$i;\
done; \
fi
#
# normal bin binaries
#
@ -416,13 +435,17 @@ lint:
#
depend: dependdirs
@if test -f Makefile.depend ; then \
makedepend `echo $(CPPFLAGS) | sed 's/-f[-a-z]*//g'` -o .lo $(srcdir)/*.c $(srcdir)/*/*.c ; \
makedepend `echo $(CPPFLAGS) | \
awk '{for(i=1;i<=NF;i++) if (match(substr($$i,1,2), "-[ID]")) print $$i}'` \
-o .lo $(srcdir)/*.c $(srcdir)/*/*.c ; \
fi
nosysdepend: nosysdependdirs
@if test -f Makefile.depend ; then \
makedepend `echo $(CPPFLAGS) | sed 's/-f[-a-z]*//g'` -o .lo $(srcdir)/*.c $(srcdir)/*/*.c ; \
makedepend `echo $(CPPFLAGS) | \
awk '{for(i=1;i<=NF;i++) if (match(substr($$i,1,2), "-[ID]")) print $$i}'` \
-o .lo $(srcdir)/*.c $(srcdir)/*/*.c ; \
$(PERL) -n -i.bak $(top_srcdir)/makenosysdepend.pl Makefile ; \
fi

View File

@ -28,7 +28,6 @@ man8dir = $(mandir)/man8
snmplibdir = $(datadir)/snmp
mibdir = $(snmplibdir)/mibs
persistentdir = @PERSISTENT_DIRECTORY@
sysconfdir = @sysconfdir@
DESTDIR = @INSTALL_PREFIX@
INSTALL_PREFIX = $(DESTDIR)
@ -70,7 +69,7 @@ LINKCC = @LINKCC@
# last update, increment current (+5), and set age and revision to 0. Stop.
#
# - If any interfaces have been added since the last public release, then
# increment current and age, and set revision to 0. Stop.
# increment current AND age, and set revision to 0. Stop.
#
# - If the source code has changed at all since the last update,
# then increment revision (c:r:a becomes c:r+1:a).
@ -82,12 +81,12 @@ LINKCC = @LINKCC@
# 5.3 was at 10, 5.4 is at 15, ... This leaves some room for needed
# changes for past releases if absolutely necessary.
#
# Most recent change: 35 for release 5.8
LIBCURRENT = 35
LIBAGE = 0
LIBREVISION = 0
# Most recent change: 40 for the v5.8.1 release.
LIBCURRENT = 42
LIBAGE = 2
LIBREVISION = 1
LIB_LD_CMD = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
LIB_LD_CMD = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) @LD_NO_UNDEFINED@ -o
LIB_EXTENSION = la
LIB_VERSION =
LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
@ -100,7 +99,7 @@ RANLIB = :
.c.lo:
$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
.rc.lo:
$(LIBTOOL) --mode=compile --tag=CC windres -o $@ -i $<
$(LIBTOOL) --mode=compile --tag=RC @RC@ -o $@ -i $<
# include paths
#

115
NEWS
View File

@ -3,6 +3,119 @@ Please see the CHANGES file for a more detailed list of specific bugs/patches
that have been fixed/applied, and the ChangeLog file for a comprehensive
listing of all changes made to the code.
*5.9.4*:
IMPORTANT: SNMP over TLS and/or DTLS are not functioning properly
in this release with various versions of OpenSSL and will be fixed
in a future release.
libsnmp:
- Remove the SNMP_SWIPE_MEM() macro Remove this macro since it is not
used in the Net-SNMP code base.
- DISPLAY-HINT fixes
- Miscellanious improvements to the transports
- Handle multiple oldEngineID configuration lines
- fixes for DNS names longer than 63 characters
agent:
- Added a ignoremount configuration option for the HOST-MIB
- disallow SETs with a NULL varbind
- fix the --enable-minimalist build
apps:
- snmpset: allow SET with NULL varbind for testing
- snmptrapd: improved MySQL logging code
general:
- configure: Remove -Wno-deprecated as it is no longer needed
- miscellanious ther bug fixes, build fixes and cleanups
*5.9.3*:
security:
- These two CVEs can be exploited by a user with read-only credentials:
- CVE-2022-24805 A buffer overflow in the handling of the INDEX of
NET-SNMP-VACM-MIB can cause an out-of-bounds memory access.
- CVE-2022-24809 A malformed OID in a GET-NEXT to the nsVacmAccessTable
can cause a NULL pointer dereference.
- These CVEs can be exploited by a user with read-write credentials:
- CVE-2022-24806 Improper Input Validation when SETing malformed
OIDs in master agent and subagent simultaneously
- CVE-2022-24807 A malformed OID in a SET request to
SNMP-VIEW-BASED-ACM-MIB::vacmAccessTable can cause an
out-of-bounds memory access.
- CVE-2022-24808 A malformed OID in a SET request to
NET-SNMP-AGENT-MIB::nsLogTable can cause a NULL pointer dereference
- CVE-2022-24810 A malformed OID in a SET to the nsVacmAccessTable
can cause a NULL pointer dereference.
- To avoid these flaws, use strong SNMPv3 credentials and do not share them.
If you must use SNMPv1 or SNMPv2c, use a complex community string
and enhance the protection by restricting access to a given IP address range.
- Thanks are due to Yu Zhang of VARAS@IIE and Nanyu Zhong of VARAS@IIE for
reporting the following CVEs that have been fixed in this release, and
to Arista Networks for providing fixes.
misc:
- Snmp-create-v3-user: Fix the snmpd.conf path @datadir@ is
expanded in ${datarootdir} so datarootdir must be set before
@datadir@ is used.
general: Many bug fixes
*5.9.2*:
security:
- These two CVEs can be exploited by a user with read-only credentials:
- CVE-2022-24805 A buffer overflow in the handling of the INDEX of
NET-SNMP-VACM-MIB can cause an out-of-bounds memory access.
- CVE-2022-24809 A malformed OID in a GET-NEXT to the nsVacmAccessTable
can cause a NULL pointer dereference.
- These CVEs can be exploited by a user with read-write credentials:
- CVE-2022-24806 Improper Input Validation when SETing malformed
OIDs in master agent and subagent simultaneously
- CVE-2022-24807 A malformed OID in a SET request to
SNMP-VIEW-BASED-ACM-MIB::vacmAccessTable can cause an
out-of-bounds memory access.
- CVE-2022-24808 A malformed OID in a SET request to
NET-SNMP-AGENT-MIB::nsLogTable can cause a NULL pointer dereference
- CVE-2022-24810 A malformed OID in a SET to the nsVacmAccessTable
can cause a NULL pointer dereference.
- To avoid these flaws, use strong SNMPv3 credentials and do not share them.
If you must use SNMPv1 or SNMPv2c, use a complex community string
and enhance the protection by restricting access to a given IP address range.
- Thanks are due to Yu Zhang of VARAS@IIE and Nanyu Zhong of VARAS@IIE for
reporting the following CVEs that have been fixed in this release, and
to Arista Networks for providing fixes.
misc:
- Snmp-create-v3-user: Fix the snmpd.conf path @datadir@ is
expanded in ${datarootdir} so datarootdir must be set before
@datadir@ is used.
general: Many bug fixes
*5.9.1*:
General: Many bug fixes
*5.9*
snmplib:
- Add IPv6 support to DTLSUDP transport CHANGES: snmplib: use new
netsnmp_sockaddr_storage in netsnmp_addr_pair CHANGES: snmplib: add
base_transport ptr for tunneled transports
snmpd:
- Security vulnerabilty in the ping MIB reported by Christopher Ertl
from Microsoft fixed
- Changing to a different uid/gid can only be done once
- The extend mib is now read-only by default
snmptrap:
- BUG: 2899: Patch from Drew Roedersheimer to set library
engineboots/time values before sending
unspecified:
- Add pkg-config support for building applications and sub-agents Use
the netsnmp package when building Net-SNMP applications. Use the
netsnmp-agent package when building Net-SNMP subagents.
*5.8*
snmplib:
- TLS/DTLS fixes
@ -1123,7 +1236,7 @@ UCD-SNMP NEWS:
Ports:
- HPUX 11
- Dynix/PTX 4.4
- The snmpd demon can properly run as a windows service
- The snmpd daemon can properly run as a windows service
*4.2.3*
New:

121
README
View File

@ -1,4 +1,4 @@
README file for net-snmp Version: 5.8
README file for net-snmp Version: 5.9.4
DISCLAIMER
@ -245,117 +245,8 @@ CLOSING
THANKS
The following people have contributed various patches and
improvements. To them we owe our deepest thanks (and you do too!):
Wes Hardaker <hardaker@users.sourceforge.net>
Steve Waldbusser <waldbusser@nextbeacon.com>
Dan A. Dickey <ddickey@transition.com>
Dave Shield <D.T.Shield@csc.liv.ac.uk>
Giovanni S. Marzot <gmarzot@nortelnetworks.com>
Niels Baggesen <nba@users.sourceforge.net>
Simon Leinen <simon@limmat.switch.ch>
David T. Perkins <dperkins@dsperkins.com>
Mike Perik <mikep@crt.com>
Sanjai Narain <narain@thumper.bellcore.com>
francus@metsny.delphi.com
Gary Palmer <gpalmer@freebsd.org>
Marc G. Fournier <scrappy@ki.net>
Gary A. Hayward <gah@bellcore.com>
Jennifer Bray <jbray@origin-at.co.uk>
Philip Guenther <guenther@gac.edu>
Elwyn B Davies <edavies@origin-at.co.uk>
Simon Burge <simonb@telstra.com.au>
David Paul Zimmerman <dpz@apple.com>
Alan Batie <batie@aahz.jf.intel.com>
Michael Douglass <mikedoug@texas.net>
Ted Rule <Ted_Rule@FLEXTECH.CO.UK>
Craig Bevins <craigb@bitcom.net.au>
Arther Hyun <arthur@psi.com>
Cristian Estan <Cristian.Estan@net.utcluj.ro>
Eugene Polovnikov <eugen@rd.zgik.zaporizhzhe.ua>
Jakob Ellerstedt <jakob@dynarc.se>
Michael J. Slifcak <slif@bellsouth.net>
Jonas Olsson <jolsson@erv.ericsson.se>
James H. Young <sysjhy@gsu.edu>
Jeff Johnson <jbj@redhat.com>
Markku Laukkanen <marlaukk@stybba.ntc.nokia.com>
Derek Simkowiak <dereks@kd-dev.com>
David F. Newman <dnewman@epnet.com>
Nick Amato <naamato@merit.edu>
Mike Baer <baerm@calweb.com>
Patrick Lawrence <pjlawrence@ucdavis.edu>
Russ Mundy <mundy@tislabs.com>
Olafur Gudmundsson <ogud@tislabs.com>
David Reeder <dreeder@tislabs.com>
Ed Lewis <lewis@tislabs.com>
Bill Babson <wbabson@tislabs.com>
Chris Smith <csmith@platform.com>
Mike Michaud <mikemichaud@earthlink.net>
Andy Hood <ahood@westpac.com.au>
Robert Story <rstory@freesnmp.com>
Bert Driehuis <driehuis@playbeing.org>
Juergen Schoenwaelder <schoenw@ibr.cs.tu-bs.de>
Frank Strauss <strauss@ibr.cs.tu-bs.de>
Ragnar Kjørstad <ucd@ragnark.vestdata.no>
Jochen Kmietsch <jochen.kmietsch@tu-clausthal.de>
Jun-ichiro itojun Hagino <itojun@iijlab.net>
John L Villalovos <john.l.villalovos@intel.com>
Christoph Mammitzsch <Christoph.Mammitzsch@tu-clausthal.de>
Arne Oesleboe <Arne.Oesleboe@item.ntnu.no>
Jeff Cours <jeff@ultradns.com>
Karl Schilke <karl_schilke@eli.net>
John Naylon <jbpn@cambridgebroadband.com>
Ken Hornstein <kenh@cmf.nrl.navy.mil>
Martin Oldfield <m@mail.tc>
Harrie Hazewinkel <harrie@users.sourceforge.net>
Mark Ferlatte <ferlatte@users.sourceforge.net>
Marus Meissner <marcusmeissner@users.sourceforge.net>
Stephan Wenzer <stephanwenzel@users.sourceforge.net>
Ron Mevissen <ron.mevissen@eed.ericsson.se>
T.J. Mather <tjmather@tjmather.com>
Craig Setera <seterajunk@charter.net>
Katsuhisa ABE <abekatsu@cysols.com>
Axel Kittenberger <Axel.Kittenberger@maxxio.com>
Johannes Schmidt-Fischer <jsf@InterFace-AG.com>
Jeffrey Watson <nostaw@users.sourceforge.net>
Bruce Shaw <Bruce.Shaw@gov.ab.ca>
Stefan Radman <sradman@users.sourceforge.net>
Stephen J. Friedl <sjfriedl@users.sourceforge.net>
Alex Burger <alex_b@users.sourceforge.net>
Christophe Varoqui <ext.devoteam.varoqui@sncf.fr>
Srikanth Pindiproli <sripindip@users.sourceforge.net>
Kevin Graham <kevgraham7@users.sourceforge.net>
Xiaofeng Ling <xfling@users.sourceforge.net>
Brandon Knitter <knitterb@bl...>
Andrew Findlay <andrew.findlay@skills-1st.co.uk>
Ron Tabor <rtabor@users.sourceforge.net>
Peter Warasin <drg-r3@users.sourceforge.net>
Bob Rowlands <robert.rowlands@sun.com>
Peter Hicks <Peter.Hicks@POGGS.CO.UK>
Andy Smith <wasmith32@earthlink.net>
Nick Barkas <nbarkas@users.sourceforge.net>
Noah Friedman <friedman@prep.ai.mit.edu>
Geert De Peuter <geert@depeuter.org>
Magnus Fromreide <magfr@lysator.liu.se>
Marcus Meissner <marcusmeissner@users.sourceforge.net>
Andrew Rucker Jones <arjones@users.sourceforge.net>
Dai.H. <dg-f@users.sourceforge.net>
Thomas Anders <tanders@users.sourceforge.net>
Vladislav Bogdanov <slava_reg@nsys.by>
Peter Martin <pnmartin@users.sourceforge.net>
Thomas Lackey <telackey@users.sourceforge.net>
Joe Buehler <jbuehler@spirentcom.com>
Anders Persson <apersson@users.sourceforge.net>
Rojer <rojer@users.sourceforge.net>
Bart Van Assche <bart.vanassche@gmail.com>
Pablo Carboni <pcarboni@users.sourceforge.net>
Bill Fenner <fenner@gmail.com>
Brian Sipos <bsiposrkf@users.sourceforge.net>
Eugene M. Kim <eugene.kim@ntti3.com>
Anders Wallin <wallinux@gmail.com>
Andrew Stormont <andy-js@users.sourceforge.net>
Keith Mendoza <keith@icei.org>
We've probably forgotten people on this list. Let us know if you've
contributed code and we've left you out.
This project has been graciously supported by a long list of people
(too long to keep roperly up to date). To them we owe our deepest
thanks (and you do too!). Please see the git log or ChangeLog file,
where the core developers are careful to have (hopefully always)
pointed out where patches have come from.

View File

@ -4,9 +4,7 @@
*
***************************************************************************
This guide describes how to build Net-SNMP with Microsoft Visual C++, the
MinGW gcc compiler or the Cygwin gcc compiler. As developers build with other
Win32 environments, their notes will be included here.
This guide describes how to build Net-SNMP binaries for Windows.
The sections in this guide are:
@ -14,7 +12,6 @@ Current Status for Win32 platforms
Interactions with Other Vendor's Products
Running Net-SNMP as a replacement for the Microsoft SNMP service
Co-existence with Microsoft SNMP services
Installing Platform SDK
Microsoft Visual C++ - Overview
Microsoft Visual C++ - Configure / nmake - Building
Microsoft Visual C++ - Workspace - Building
@ -26,13 +23,12 @@ Microsoft Visual C++ - Building with IPv6
Microsoft Visual C++ - Building your own applications with snmplib
Microsoft Visual C++ - Extending the Agent
GCC on Windows
Cygwin - Building
MinGW - Building
MinGW - Building with OpenSSL
Configuring Net-SNMP
How to Register the Net-SNMP Agent and Trap Daemon as Windows services
Notes on SET support for WIN32 ports
Notes on preprocessor defines for MSVC, MinGW and Cygwin
Notes on preprocessor defines
Acknowledgements
@ -42,14 +38,10 @@ Acknowledgements
*
***************************************************************************
All applications build with Microsoft Visual C++ 6.0, Microsoft Development
Environment 2003 (MSVC 7.0/7.1), Microsoft Visual Studio 2005, Microsoft
Visual Studio 2008, Microsoft Visual Studio 2010, gcc under Cygwin and gcc
under MinGW.
All applications build with Microsoft Studio, MinGW and Mingw-w64.
- All of the applications work (snmpwalk, snmpget, snmpset, snmptrap, ...).
- The system, snmp, ip, tcp, udp and icmp MIB-groups work (requires the
Platform SDK).
- The system, snmp, ip, tcp, udp and icmp MIB-groups work.
- The Net-SNMP agent runs as an AgentX master agent or as subagent.
- smux is working.
- The target, notification, disman/mte groups compile but are not tested.
@ -58,28 +50,14 @@ under MinGW.
- Running the agent on a non-standard UDP or TCP port works.
- Snmpd can be registered as a Windows service.
- Snmptrapd can be registered as a Windows service.
- Some build environments allow long pathnames that contain
embedded spaces. As this is not true for Cygwin "configure",
the documented example scripts will refer to "c:/usr"
as the base directory for installed Net-SNMP software.
- When using the winExtDLL extension agent, the Net-SNMP agent will
load the Windows SNMP Service extension DLLs.
The next subsection relates to items that are built using Visual Studio
- All Visual Studio project (.dsp) files are cleaned, and
a) Generate code to use Multi-Threaded DLL (/MD) "C" run-time library;
b) Provide the same preprocessor defines (WIN32,_CONSOLE,_MBCS);
c) Remove unnecessary references to GDI, ODBC, and "C" libraries;
d) Debug versions build source browsing and debugging information;
e) Provide consistent include search paths.
- All Debug and Release targets linked with libsnmp project targets
build without errors, and are fully functional.
- Both building via the interactive development environment and via the
command line (nmake) is supported.
- With Visual Studio 2005 and later, the Net-SNMP source code can be
compiled into either 32-bit or 64-bit executables (the amd64/x64
architecture). Previous Visual Studio versions support 32-bit executables
@ -124,14 +102,17 @@ The next subsection relates to items that are built using Visual Studio
*
***************************************************************************
As of Net-SNMP 5.4, the Net-SNMP agent is able to load the Windows SNMP
service extension DLLs by using the Net-SNMP winExtDLL extension.
The Net-SNMP agent is able to load the Windows SNMP service extension DLLs by
using the Net-SNMP winExtDLL extension.
The Windows SNMP service must be installed, but the service must be disabled.
This is required so that the extension DLLs are available for loading, and
also because this extension and the existing Windows extensions use the
Windows SNMP API from snmpapi.dll.
Additionally, Net-SNMP must be built in 32-bit mode. This is because Microsoft
only provides a 32-bit version of the SNMP extension DLLs.
An alternative to winExtDLL is to proxy requests from Net-SNMP to the Windows
SNMP service. See the section 'Co-existence with Microsoft SNMP services'.
@ -153,6 +134,20 @@ Limitations
see also https://connect.microsoft.com/onecare/feedback/ViewFeedback.aspx?FeedbackID=504908.
Installing the Windows SNMP Service
-----------------------------------
The procedure for installing the Windows SNMP service on Windows 10 is as
follows:
1. Use the Windows + I key combination to open the Settings App.
2. Go to the Apps category and move to Apps & features tab.
3. Tap on the Optional features button.
4. On the new page, click on the Add a feature button.
5. Scroll down to Simple Network Management Protocol (SNMP) and select it.
6. Press the Install button to install SNMP on your PC.
Enabling the Windows SNMP extension agents
------------------------------------------
@ -161,7 +156,7 @@ When installing Net-SNMP using the binary available from the web site, select
The recommended way to start snmpd is with the following command line:
snmpd.exe -I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,system_mib,sysORTable
snmpd.exe -I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,snmp_mib,system_mib,sysORTable
The above command will exclude all the Net-SNMP extensions that overlap with
the default Windows (2003) extensions included with Windows. Other Net-SNMP
@ -193,8 +188,7 @@ To see what Windows modules are being loaded, you can shut down the
service and then run snmpd.exe from the command line with winExtDLL
debugging enabled using (all on one line):
snmpd.exe -Lo -I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,system_mib,
sysORTable -DwinExtDLL
snmpd.exe -Lo -I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,snmp_mib,system_mib,sysORTable -DwinExtDLL
The Windows DLL snmpmib.dll (SNMPMIB) contains SNMP traffic statistics
(.1.3.6.1.2.1.11). As we are using Net-SNMP and not the Windows SNMP Service,
@ -236,23 +230,11 @@ Net-SNMP instead of SNMP by modifying the registry. See Microsoft article
193888 for more information.
Compiling Net-SNMP with the winExtDLL extension (MSVC)
------------------------------------------------------
Compiling Net-SNMP with the winExtDLL extension
-----------------------------------------------
When building with MSVC 6, the Microsoft Platform SDK is required. Note: the
most recent Platform SDK version that is still compatible with MSVC 6 is the
February 2003 edition. This edition is no longer available online but can be
ordered via http://mssdk.orderport.net/22221848/showall.asp.
Configure / nmake:
-add --with-winextdll to the Configure command line.
Workspace:
-in file win32\net-snmp\net-snmp-config.h modify
/* #undef USING_WINEXTDLL_MODULE */ into the following:
#define USING_WINEXTDLL_MODULE 1
To build Net-SNMP with the winExtDLL extension, add --with-winextdll to the
configure command line.
***************************************************************************
@ -408,113 +390,45 @@ See the snmpd.conf man page for more information on configuring security.
***************************************************************************
*
* Installing Platform SDK
* Microsoft Visual Studio - Overview
*
***************************************************************************
If you are using Microsoft Visual Studio 6.0, you will have to install the
Platform SDK (PSDK) first.
Once the PSDK has been installed, select the following action from the Start
Menu: Programs / Microsoft Windows SDK / Visual Studio Registration / Windows
SDK Configuration Tool.
If you are using any of the following environments, the PSDK download is not
necessary as the required parts of the PSDK are included:
- Microsoft Visual Studio 2002 or later.
- Cygwin.
- MinGW.
In order for the process part of the host resources MIB to work under Windows
NT you will need to obtain PSAPI.DLL. This is available under the download
section of www.microsoft.com. The DLL is included with Windows 2000 and XP,
and is also part of the VC++ distribution.
If you are building Net-SNMP using Cygwin, go now to "Cygwin - Building".
If you are building Net-SNMP using MinGW, go now to "MinGW - Building".
Otherwise, see the Building section below.
***************************************************************************
*
* Microsoft Visual C++ - Overview
*
***************************************************************************
There are two ways to build Net-SNMP using Microsoft Visual C++. The first
and easiest method is using Configure and nmake on the command line, and the
second is using the Workspace files inside the interactive development
environment.
nmake is required to build Net-SNMP with Microsoft Visual Studio.
To use nmake on the command line, the Configure script is run first to create
the various makefiles. Once these have been created, nmake is used to build
the applications. Perl is required to use this method, as the Configure
script is written in Perl. ActiveState ActivePerl is available at:
script is written in Perl. Perl source code is available at:
http://www.activestate.com/Products/ActivePerl/
https://www.cpan.org/src/
The make file system is based on and uses the directory structure of the
projects contained in the Workspace files which are described below. It is
recommended that you read and understand how the workspaces are configured
even if you will only be using the command line Configure / nmake system.
For building via the interactive development environment, there are the Win32
workspaces win32.dsw and libdll.dsw. The last workspace allows to build a DLL
version of snmplib (netsnmp.dll).
There is one core development library ('libsnmp'), together with a number
of utility projects for the individual executable commands ('snmpget',
'snmpwalk', etc...). All of these projects require the .lib created by
the libsnmp project.
The agent requires the core library plus the other two library projects
('libagent' and 'netsnmpmibs') together with the main agent project ('snmpd').
The final application project is the trap handler 'snmptrapd'. This also
requires the agent libraries ('libagent' and 'netsnmpmibs') as well as the
core development library.
There is a Debug version and Release version for each subproject. This is so
the Debug and Release versions of an application can be built and tested
separately.
VC++ 6.0, 7.1, 8.0 (2005), 9.0 (2008) and 10.0 (2010) have been tested.
Building with earlier Microsoft compiler versions is no longer supported.
Note: if you want to distribute the generated executable, you will also need
If you want to distribute the generated executable, you will also need
to distribute the Microsoft Visual Studio Redistributable Package. Check the
EULA included with that package before redistributing it.
OpenSSL is required to support the encryption capabilities in SNMPv3,
or SHA authentication.
Since the MSVC build environment does not natively use "configure" nor "make"
to generate the various pathnames that the programs require, the header files
need to be manually modified when using the IDE, and an install script is
provided. When using the Perl Configure / nmake system, the header files are
automatically modified and require no manual editing.
Since the Microsoft Visual Studio build environment does not natively use
"configure" nor "make" to generate the various pathnames that the programs
require, the header files need to be manually modified when using the IDE, and
an install script is provided. When using the Perl Configure / nmake system,
the header files are automatically modified and require no manual editing.
The projects are arranged so that ALL of the usable products, the .exe files,
are written to the win32\bin directory. The win32\lib directory is used only
to build the the files in the win32\bin directory. Once building is
completed, there is no further use for the files in the win32\lib directory.
Debug Information
-----------------
Note that VC++ 6.0 has options for debugging information - the 'Program
Database'. This option is set in the Project settings, C/C++ tab, 'General'
category, and is turned on by default during the conversion of the project
files. This option is not for use with a library, as it embeds debug
information into the library that references an external file that will
not be available to the linking application. If you get an error message
along the lines of 'debugging information not available in file vc60.pdb,
make sure the library debug option is set to 'Program Database' or "/Zi".
***************************************************************************
*
* Microsoft Visual C++ - Configure / nmake - Building
* Microsoft Visual Studio - Configure / nmake - Building
*
***************************************************************************
@ -523,10 +437,18 @@ The first and easiest method is by running the win32\build.bat script. The
second is manually running Configure and nmake.
Note: Perl is required to use this method as the Configure script is
written in Perl. ActiveState ActivePerl is available at:
written in Perl. The Perl source code is available at:
http://www.activestate.com/Products/ActivePerl/
https://www.cpan.org/src/
The Perl interpreter can be built as follows:
1. Extract the Perl source code archive.
2. In win32/Makefile, change CCTYPE to the string that corresponds to your
Visual Studio version, e.g. MSVC140.
3. Edit INST_DRV and INST_TOP if necessary.
4. Run vcvarsall.bat.
5. Run nmake.
6. Run nmake install.
Win32\build.bat script
======================
@ -558,23 +480,25 @@ steps to build using build.bat:
==================================
1. OpenSSL support: disabled
2. Platform SDK support: disabled
2. OpenSSL include directory: C:\OpenSSL-Win64\include
3. OpenSSL library directory: C:\OpenSSL-Win64\lib\VC
4. Platform SDK support: disabled
3. Install path: c:/usr
4. Install after build: enabled
5. Install path: c:/usr
6. Install after build: enabled
5. Perl modules: disabled
6. Install perl modules: disabled
7. Perl modules: disabled
8. Install perl modules: disabled
7. Quiet build (logged): enabled
8. Debug mode: disabled
9. Quiet build (logged): enabled
10. Debug mode: disabled
9. IPv6 transports (requires SDK): disabled
10. winExtDLL agent (requires SDK): disabled
11. IPv6 transports (requires SDK): disabled
12. winExtDLL agent (requires SDK): disabled
11. Link type: static
13. Link type: static
12. Install development files disabled
14. Install development files disabled
F. Finished - start build
Q. Quit - abort build
@ -588,9 +512,6 @@ steps to build using build.bat:
already be installed. See the section 'Microsoft Visual C++ - Building
with OpenSSL' for details.
To compile with the Platform SDK, the Platform SDK must already be
installed. See the section 'Installing Platform SDK' for details.
To use the IPv6 transports, Windows 98 or later is required.
See the section 'Running Net-SNMP as a replacement for the Microsoft
@ -648,10 +569,9 @@ first by the Configure script. Following are sample steps to:
2. Initialize the Visual Studio build environment by running VCVARS32.bat
which can be found in the bin folder of your Visual Studio install folder.
3. Type (all on one line):
3. Run the following command:
perl Configure --with-sdk --with-ssl --config=debug
--prefix="c:/usr"
perl Configure --with-sdk --with-ssl --config=debug --prefix="c:/usr"
4. The make files will be generated, and a configuration summary will appear:
@ -671,7 +591,7 @@ first by the Configure script. Following are sample steps to:
nmake
nmake install
perl Configure --with-sdk --with-ssl --config=debug --linktype=dynamic
perl Configure --with-sdk --with-ssl --config=debug --linktype=dynamic\
--prefix="c:/usr"
nmake libs_clean
@ -703,255 +623,18 @@ Note: The Configure option --linktype=static (or not specifying a linktype)
***************************************************************************
*
* Microsoft Visual C++ - Workspace - Building
*
***************************************************************************
The win32.dsw and win32dll.dsw workspaces allow to build the agent and the
applications. Proceed as follows:
1. Update the version stamp in win32\net-snmp\net-snmp-config.h. The current
version can be found in the Unix configure script (top level folder) by
looking for the PACKAGE_VERSION variable.
2. If SNMPv3 encryption capabilities or SHA authentication is required,
install the OpenSSL DLL and library file as described in the section
'Microsoft Visual C++ - Building with OpenSSL" and then continue with
step 2.
3. The default installation path is c:\usr. This folder will contain all
the binaries, MIB files, configuration files etc. To change the location,
the win32\net-snmp\net-snmp-config.h file needs to be modified by changing
the INSTALL_BASE variable.
Note:
All paths in net-snmp-config.h use the "/" UNIX pathname delimiter.
If a drive letter is not specified, the current drive letter is assumed.
For example: #define INSTALL_BASE "c:/usr".
4. When building DLLs instead of static libraries, *change* the following
line which is located near the top of the file:
/* #undef NETSNMP_USE_DLL */
*to*
#define NETSNMP_USE_DLL 1
5. Build the agent and the applications
a. Open win32.dsw (static build) or win32dll.dsw (dynamic build).
b. If you want to generate 64-bit binaries instead of 32-bit binaries,
select "Build/Configuration Manager" and add the "x64" platform.
c. Select "Build/Batch Build..."
d. Select the projects and configurations you want to build.
e. Click "ReBuild All".
f. When building is done, View the Output window, clip and
save to a text file if there is some information to share.
6. If the Perl modules are required, continue with the next section:
'Microsoft Visual C++ - Building the Perl SNMP modules'.
Otherwise, continue with the section:
'Microsoft Visual C++ - Installing'
***************************************************************************
*
* Microsoft Visual C++ - Workspace - Building the Perl SNMP modules
*
***************************************************************************
The Perl modules should be compiled against the DLL version of snmplib.
Compiling against a static version is possible, but each module will
load it's own copy of the MIB, and sharing data between modules will
not be possible. For example, the conf module tests will fail.
1. Complete the section 'Microsoft Visual C++ - Building' and choose for
the dynamic build. This will build the libraries, agent and applications.
Note: SNMPD.EXE and SNMPTRAPD.EXE are required for running the tests
against the SNMP Perl module.
2. Install Net-SNMP as described in the 'Microsoft Visual C++ - Installing'
section to install the applications, the DLL and the .lib files.
3. Continue with the Win32 section of the Perl README file located in
perl\SNMP\README.
***************************************************************************
*
* Microsoft Visual C++ - Workspace - Installing
*
***************************************************************************
The install script "win32\install-net-snmp.bat" should be run after a
build is successful. It copies the programs, MIB files, and development
components to an install directory named in the INSTALL_BASE variable.
1. Complete the section 'Microsoft Visual C++ - Building'.
2. Open win32\install-net-snmp.bat using a text editor.
The INSTALL_BASE variable must match the INSTALL_BASE compile constant
defined in "win32\net-snmp\net-snmp-config.h", using these rules:
a. All paths in install-net-snmp.bat use the "\" DOS pathname delimiter.
Example: set INSTALL_BASE="c:\usr".
b. All paths in net-snmp-config.h use the "/" UNIX pathname delimiter.
If a drive letter is not specified, the current drive letter is
assumed.
Example: #define INSTALL_BASE "c:/usr".
Note: You may also modify "install-net-snmp.bat" in order to not install
the linking libraries, or the header files.
3. Open a command prompt window.
4. Cd to the base directory where this file README.win32 is located.
5. Run win32\install-net-snmp.bat to install the programs.
## sample output from install-net-snmp.bat
NOTE: Directory already exist messages are normal. If you are
not building with OpenSSL, then DLL not found messages
are normal.
C:\net-snmp-5.1.1> win32\install-net-snmp
Remember to run this script from the base of the source directory.
Creating "c:\usr" sub-directories
A subdirectory or file c:\usr already exists.
A subdirectory or file c:\usr\bin already exists.
A subdirectory or file c:\usr\etc\snmp already exists.
A subdirectory or file c:\usr\share\snmp\snmpconf-data
already exists
A subdirectory or file c:\usr\share\snmp\snmpconf-data\
snmp-data already exists.
A subdirectory or file c:\usr\share\snmp\snmpconf-data\
snmpd-data already exists.
A subdirectory or file c:\usr\share\snmp\snmpconf-data\
snmptrapd-data already exists.
A subdirectory or file c:\usr\lib already exists.
A subdirectory or file c:\usr\mibs already exists.
A subdirectory or file c:\usr\include already exists.
A subdirectory or file c:\usr\include\net-snmp already
exists
.
A subdirectory or file c:\usr\include\ucd-snmp already
exists
.
Copying MIB files to "c:\usr"\mibs
Copying compiled programs to "c:\usr"\bin
Copying snmpconf files to "c:\usr"\share\snmp\snmpconf-
data\snmp-data
Copying link libraries to "c:\usr"\lib
Copying header files to "c:\usr"\include
Deleting debugging files from "c:\usr"
Copying DLL files to "c:\usr"
The system cannot find the file specified.
Done copying files to "c:\usr"
C:\net-snmp-5.1.1>
## END sample output from install-net-snmp.bat
6. Add the bin folder (c:\usr\bin in the above example) to
your system path.
7. Test the installation. For a simple test to see if Net-SNMP is working,
open a _new_ command prompt window, and type:
snmptranslate -IR -Td linkDown
8. If the folder that Net-SNMP was installed to is ever changed, modify the
system environment variables or registry keys as explained in the
'Configuration_Overview.html' file located in win32/dist/htmlhelp.
***************************************************************************
*
* Microsoft Visual C++ - Building with OpenSSL
* Microsoft Visual Studio - Building with OpenSSL
*
***************************************************************************
OpenSSL is required to support the encryption capabilities in SNMPv3
(or SHA authentication). The win32 version of OpenSSL can be built
from the sources or you can download a pre-compiled version.
Building from source:
=====================
1. Install an assembler. If you do not have the M$ assembler installed (MASM)
you can get a free one(NASM) from:
http://www.kernel.org/pub/software/devel/nasm
2. Obtain the OpenSSL source from the link below. Follow instructions in
INSTALL.W32
ftp://ftp.openssl.org/source/
3. Once the OpenSSL libraries are built, copy the folder inc32\openssl to
C:\OpenSSL\Include\openssl and the folder out32dll to C:\OpenSSL\Lib\VC.
Using a pre-compiled version
============================
1. Obtain the latest OpenSSL binary from the link below.
http://www.slproweb.com/products/Win32OpenSSL.html
2. Install the package to c:\OpenSSL.
Project changes
===============
1. Edit the win32\net-snmp\net-snmp-config.h header file. Add:
#define NETSNMP_USE_OPENSSL 1
2. Open Visual Studio, open the Tools menu and select Options. Go to
Projects and Solutions and select VC++ Directories. Add
C:\OpenSSL\Include to the list of include directories and
C:\OpenSSL\Lib\VC to the list of library directories.
3. Continue with the section 'Microsoft Visual C++ - Building"
(or SHA authentication). Pre-compiled binaries are available from
http://www.slproweb.com/products/Win32OpenSSL.html.
***************************************************************************
*
* Microsoft Visual C++ - Building with IPv6
*
***************************************************************************
The default build configuration supports SNMP over IPv4-based transports.
However Windows 2000 and later include an IPv6-capable stack which
can be used to provide SNMP over IPv6. To enable IPv6, the Microsoft PSDK
is required and NETSNMP_ENABLE_IPV6 has to be enabled in
win32\net-snmp\net-snmp-config.h. Change the following single line from:
/* #undef NETSNMP_ENABLE_IPV6 */
to:
#define NETSNMP_ENABLE_IPV6 1
Next, continue with the section 'Microsoft Visual C++ - Building"
***************************************************************************
*
* Microsoft Visual C++ - Building your own applications with snmplib
* Microsoft Visual Studio - Building your own applications with snmplib
*
***************************************************************************
@ -986,7 +669,7 @@ Note: Some users may have better results compiling other packages that use
***************************************************************************
*
* Microsoft Visual C++ - Extending the Agent
* Microsoft Visual Studio - Extending the Agent
*
***************************************************************************
@ -1015,112 +698,46 @@ and 'snmpd' project. And things should work just fine.
*
***************************************************************************
There are two versions of GCC (the GNU Compiler Collection) in common use on
Microsoft Windows operating systems. This section will attempt to point the
There are multiple versions of GCC (the GNU Compiler Collection) in common use
on Microsoft Windows operating systems. This section will attempt to point the
user to the information required to choose the one to best suit their needs.
Cygwin
MinGW and Mingw-w64
The Cygwin compiler and toolkit provides a Unix style shell and environment
for Windows based systems. The cygwin1.dll provides a POSIX emulation layer
that simplifies porting Unix / Linux applications to Windows. The Cygwin dlls
are required if an application is to be distributed. The dependency on the
The Cygwin tool chain and documentation can be found at:
The MinGW projects provide a Windows native version of gcc. The tool chain
links against existing Windows dlls found on most systems. Binaries compiled
with MinGW do not require additional libraries to be distributed. The MSYS
and MSYS2 environments provide a shell (Bash) and tools to emulate a Unix style
build environment on Windows. Mingw-w64 is an improved version of MinGW which
supports both 32-bit and 64-bit environments.
http://sources.redhat.com/cygwin/
MSYS + MinGW
============
MinGW
The MinGW compiler is a Windows native version of gcc. The tool chain links
against existing Windows dlls found on most systems. Binaries compiled with MinGW
do not require additional libraries to be distributed. The MSyS environment
provides a shell (Bash) and tools to emulate a Unix style build environment on
Windows. The MinGW and MSyS tools and documentation can be found at:
The MinGW and MSYS tools and documentation can be found at:
http://www.mingw.org
***************************************************************************
*
* Cygwin - Building
*
***************************************************************************
An alternate way to build and run Net-SNMP on Win32 is to use the Cygwin
environment. Detailed information about the Cygwin environment is available
on the web at: http://sources.redhat.com/cygwin/.
Cygwin allows you to compile almost the complete agent and applications.
As an example, the following configure options create a working set of
programs:
ENV_SEPARATOR=":" \
./configure \
--with-mib-modules="host agentx disman/event-mib examples/example" \
--with-out-mib-modules=host/hr_network \
If you want to disable SNMPv3 auth and privacy features, add:
--without-openssl \
If you want to use IPv6 transports, add:
--enable-ipv6
Note: the source code should *not* be in a folder that contains a space.
For example, compiling in your 'My Documents' folder or your Desktop folder
(usually c:\Documents and Settings\xxxx\Desktop) is not supported.
A note for Windows NT users: in order for the process part of the host
resources MIB (hr_swrun) to work under Windows NT you will need to get hold
of PSAPI.DLL. This DLL is available under the download section of
www.microsoft.com, and is also included in the VC++ distribution.
If the folder that Net-SNMP was installed to is ever changed, modify the
system environment variables or registry keys as explained in the
'Configuration_Overview.html' file located in win32/dist/htmlhelp.
***************************************************************************
*
* MinGW - Building
*
***************************************************************************
Currently the tools and agent will compile on win32 platforms using the
MinGW tools with the MSyS environment. MinGW, MSyS and the associated
documentation can be downloaded from: http://www.mingw.org.
MinGW, MSyS and the associated documentation can be downloaded from
http://www.mingw.org.
Compiling net-snmp with MinGW requires GNU regex and libintl. Binaries and
developer header files for these libraries are available at:
developer header files for these libraries can be installed by running the
following command from a MinGW shell:
http://gnuwin32.sourceforge.net/packages/regex.htm
http://gnuwin32.sourceforge.net/packages/libintl.htm
mingw-get install msys-libregex msys-libintl msys-libopenssl
mingw-get upgrade msys-libregex msys-libintl msys-libopenssl
Proceed as follows to build Net-SNMP:
1. Install GNU regex and GNU libintl binaries and developer files in the
MinGW tree.
2. If SNMPv3 encryption capabilities or SHA authentication is required,
install the OpenSSL DLL and library file as described in the section
'MinGW - Building with OpenSSL" and then continue with step 3.
3. Determine where you want the programs to be installed. Currently
you must use path segments no longer than 8 characters, and no
embedded spaces are allowed. Due to limitations with Makefiles,
you must also specify the MIBDIRS default that corresponds to
a particular subtree from the base directory.
Note: All paths use the "/" UNIX pathname delimiter.
Also note that embedded spaces will NOT currently work
with MinGW configure. Use the DOS 8.3 form of the path,
For example: Say that you want to install the programs in
the directory "C:\usr".
Use BASEDIR=c:/usr
4. Configure net-snmp using the configure flags as shown:
1. Configure net-snmp using the configure flags as shown:
BASEDIR=c:/usr
@ -1129,55 +746,40 @@ Proceed as follows to build Net-SNMP:
--with-mib-modules="agentx disman/event-mib winExtDLL examples/example"\
--disable-embedded-perl --without-perl-modules \
Note: while the Net-SNMP implementation of the host resources MIB is not
supported when using MinGW, winExtDLL is supported. Via winExtDLL you can
use Microsoft's implementation of the host resources MIB.
If you want to use IPv6 transports, add:
--enable-ipv6 --with-transports="TCPIPv6 UDPIPv6"
4.1. If you want to use IPv6 transports, add:
--enable-ipv6 --with-transports="TCPIPv6 UDPIPv6" \
Note: while the Net-SNMP implementation of the host resources MIB is not
supported when using MinGW, winExtDLL is supported. Via winExtDLL you can
use Microsoft's implementation of the host resources MIB.
2. Type "make" to compile the package.
5. Type "make" to compile the package.
6. Type "make install" to install the package.
7. If the folder that Net-SNMP was installed to is ever changed, modify the
system environment variables or registry keys as explained in the
'Configuration_Overview.html' file located in win32/dist/htmlhelp.
3. Type "make install" to install the package.
4. If the folder that Net-SNMP was installed to is ever changed, modify the
system environment variables or registry keys as explained in the
'Configuration_Overview.html' file located in win32/dist/htmlhelp.
***************************************************************************
*
* MinGW - Building with OpenSSL
* Mingw-w64 - Building
*
***************************************************************************
OpenSSL is required to support the encryption capabilities in SNMPv3
(or SHA authentication). A pre-compiled MinGW compatible version of
OpenSSL is available on the Internet.
Follow these steps to install OpenSSL:
1. Obtain the latest OpenSSL binary from the link below.
http://www.slproweb.com/products/Win32OpenSSL.html
2. Install the package to c:\OpenSSL
3. Copy the header and library files to the the MinGW directory:
a. Copy the c:\OpenSSL\include\openssl folder to the include folder in
MinGW.
Example: "C:\MinGW\include\openssl\*.h"
b. Copy c:\OpenSSL\lib\MinGW\libeay32.* to the lib folder in Mingw.
Example: "C:\MinGW\lib\libeay32.a"
Example: "C:\MinGW\lib\libeay32.def"
4. Continue with the section 'MinGW - Building"
MSYS2 and Mingw-w64 can be installed as follows:
1. Download the MSYS2 installer from https://www.msys2.org/.
2. Run the MSYS2 installer.
3. Open an MSYS2 shell.
4. Run pacman -S make diffutils
5. On a 32-bit system, run
pacman -S mingw-w64-i686-gcc mingw-w64-i686-openssl
6. On a 64-bit system, run
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-openssl
Do not try to make the MinGW64 gcc compiler to use the MSYS2 openssl-devel
headers by adding /usr/include to the include path because this will trigger
plenty of complaints about redefined macros and structures.
***************************************************************************
*
@ -1189,7 +791,7 @@ Proceed as follows:
1. Uninstall Net-SNMP.
2. Remove the C:\usr directory completely.
3. Open a command prompt
4. Run the MSVC vcvarsall.bat script.
4. Run the Microsoft Visual Studio vcvarsall.bat script.
5. Change the current working directory to the Net-SNMP win32\dist directory.
6. Run the .\build-binary.bat script.
7. Copy the net-snmp-${version}.x86.exe installer to the desired location.
@ -1476,39 +1078,34 @@ tcpConnState of tcpConnTable is writable and the only value which may
be set by a management station is deleteTCB(12)
***************************************************************************
*******************************
*
* Notes on preprocessor defines for MSVC, MinGW and Cygwin
* Notes on preprocessor defines
*
***************************************************************************
*******************************
When adding Windows specific code, one or more of the following defines should
be used:
When adding Windows specific code, proceed as follows:
- Add a configure test in the appropriate file under configure.d for MinGW.
- Add the symbol defined by the configure test to
win32/net-snmp/net-snmp-config.h and also to
win32/net-snmp/net-snmp-config.h.in. If the feature is supported by
Microsoft visual Studio, define the symbol. Otherwise undefine it.
Define: Description:
------- ------------
WIN32 Defined by MSVC & MinGW
Try to avoid to add #ifdef's that use the WIN32, _MSC_VER and/or mingw32
macros. These macros are defined as follows:
_MSC_VER Defined by MSVC only (standard MSVC macro)
Define: Description:
------- ------------
_WIN32 Defined by Microsoft Visual Studio, MinGW and Mingw-w64.
mingw32 Defined by MinGW only
_WIN64 Defined by Microsoft Visual Studio and Mingw-w64 when
generating 64-bit code.
cygwin Defined by Cygwin only
_MSC_VER Defined by Microsoft Visual Studio only
HAVE_WIN32_PLATFORM_SDK Should be defined if the Microsoft Platform SDK is
installed and registered with MSVC or enabled for
MinGW or Cygwin
__MINGW32__ Defined by MinGW and Mingw-w64
MinGW and Cygwin do not require the Microsoft Platform SDK as they both should
contain most if not all of the functionality provided by the SDK. When adding
code that requires the PSDK under MSVC, the following can usually be used:
#if defined (HAVE_WIN32_PLATFORM_SDK) || defined (mingw32) || defined (cygwin)
As listed above, Cygwin does NOT define WIN32. When adding generic Windows
code that will work with MSVC, MinGW and Cygwin, the following should be used:
#if defined (WIN32) || defined (cygwin)
__MINGW64__ Defined by Mingw-w64 only
***************************************************************************

7
aclocal.m4 vendored
View File

@ -1,7 +1,7 @@
# generated automatically by aclocal 1.11 -*- Autoconf -*-
# generated automatically by aclocal 1.16 -*- Autoconf -*-
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -11,6 +11,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_include([m4/ac_add_search_path.m4])
m4_include([m4/ac_msg_cache.m4])
m4_include([m4/ac_msg_module_dbg.m4])

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@ mysubdir=agent
#
# what to install
#
SUBDIRS=helpers mibgroup
SUBDIRS=helpers
FTSUBDIRS=mibgroup helpers
INSTALLSBINPROGS= @SNMPD@
@ -273,9 +273,12 @@ FTAGENTOBJS=snmpd.ft @other_ftagentobjs@
#
# Define OBJS and LOBJS for clean target (just this directory)
#
OBJS = $(LIBAGENTOBJS) $(AGENTOBJS) mib_modules.o auto_nlist.o
LOBJS = $(LLIBAGENTOBJS) $(LAGENTOBJS) mib_modules.lo auto_nlist.lo
FTOBJS = $(LLIBAGENTFTS) $(FTAGENTOBJS) mib_modules.ft auto_nlist.ft
OBJS = $(LIBAGENTOBJS) $(MIBOBJS) $(AGENTOBJS) \
mib_modules.o auto_nlist.o
LOBJS = $(LLIBAGENTOBJS) $(LMIBOBJS) $(LAGENTOBJS) \
mib_modules.lo auto_nlist.lo
FTOBJS = $(LLIBAGENTFTS) $(FTMIBOBJS) $(FTAGENTOBJS) \
mib_modules.ft auto_nlist.ft
FEATUREFILE = $(top_builddir)/include/net-snmp/agent/features.h
@ -300,11 +303,11 @@ snmpd$(EXEEXT): ${LAGENTOBJS} $(USELIBS) $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LI
$(LINK) $(CFLAGS) -o $@ ${LAGENTOBJS} ${LDFLAGS} ${OUR_AGENT_LIBS}
libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION): ${LLIBAGENTOBJS} $(USELIBS)
$(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} @LD_NO_UNDEFINED@ $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) @AGENTLIBS@
$(LIB_LD_CMD) $(AGENTLIB) ${LLIBAGENTOBJS} $(USELIBS) ${LAGENTLIBS} $(LDFLAGS) $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
$(RANLIB) $(AGENTLIB)
libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS} $(AGENTLIB) $(USELIBS)
$(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(AGENTLIB) $(USELIBS) @LD_NO_UNDEFINED@ $(LDFLAGS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) $(LIB_LD_LIBS) @AGENTLIBS@
libnetsnmpmibs.$(LIB_EXTENSION)$(LIB_VERSION): ${LMIBOBJS} $(AGENTLIB) $(USELIBS) subdirs
$(LIB_LD_CMD) $(MIBLIB) ${LMIBOBJS} $(AGENTLIB) $(USELIBS) $(LDFLAGS) ${LMIBLIBS} $(PERLLDOPTS_FOR_LIBS) @AGENTLIBS@
$(RANLIB) $(MIBLIB)
agentlib: $(AGENTLIB)

View File

@ -18,7 +18,7 @@
#include <sys/types.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#endif
@ -27,9 +27,9 @@
#include <net-snmp/agent/bulk_to_next.h>
netsnmp_feature_child_of(agent_handler, libnetsnmpagent)
netsnmp_feature_child_of(agent_handler, libnetsnmpagent);
netsnmp_feature_child_of(handler_mark_requests_as_delegated, agent_handler)
netsnmp_feature_child_of(handler_mark_requests_as_delegated, agent_handler);
static netsnmp_mib_handler *_clone_handler(netsnmp_mib_handler *it);
@ -667,7 +667,7 @@ netsnmp_call_next_handler(netsnmp_mib_handler *current,
*
* @return Returns SNMPERR_SUCCESS or SNMP_ERR_* error code.
*/
netsnmp_feature_child_of(netsnmp_call_next_handler_one_request,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_call_next_handler_one_request,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CALL_NEXT_HANDLER_ONE_REQUEST
NETSNMP_INLINE int
netsnmp_call_next_handler_one_request(netsnmp_mib_handler *current,
@ -806,56 +806,51 @@ netsnmp_handler_registration_dup(netsnmp_handler_registration *reginfo)
{
netsnmp_handler_registration *r = NULL;
if (reginfo == NULL) {
if (reginfo == NULL)
return NULL;
}
r = (netsnmp_handler_registration *) calloc(1,
sizeof
(netsnmp_handler_registration));
if (r != NULL) {
r->modes = reginfo->modes;
r->priority = reginfo->priority;
r->range_subid = reginfo->range_subid;
r->timeout = reginfo->timeout;
r->range_ubound = reginfo->range_ubound;
r->rootoid_len = reginfo->rootoid_len;
if (reginfo->handlerName != NULL) {
r->handlerName = strdup(reginfo->handlerName);
if (r->handlerName == NULL) {
netsnmp_handler_registration_free(r);
return NULL;
}
}
if (reginfo->contextName != NULL) {
r->contextName = strdup(reginfo->contextName);
if (r->contextName == NULL) {
netsnmp_handler_registration_free(r);
return NULL;
}
}
if (reginfo->rootoid != NULL) {
r->rootoid =
snmp_duplicate_objid(reginfo->rootoid, reginfo->rootoid_len);
if (r->rootoid == NULL) {
netsnmp_handler_registration_free(r);
return NULL;
}
}
r->handler = netsnmp_handler_dup(reginfo->handler);
if (r->handler == NULL) {
netsnmp_handler_registration_free(r);
return NULL;
}
r = calloc(1, sizeof(netsnmp_handler_registration));
if (!r)
return r;
r->modes = reginfo->modes;
r->priority = reginfo->priority;
r->range_subid = reginfo->range_subid;
r->timeout = reginfo->timeout;
r->range_ubound = reginfo->range_ubound;
r->rootoid_len = reginfo->rootoid_len;
if (reginfo->handlerName != NULL) {
r->handlerName = strdup(reginfo->handlerName);
if (r->handlerName == NULL)
goto err;
}
if (reginfo->contextName != NULL) {
r->contextName = strdup(reginfo->contextName);
if (r->contextName == NULL)
goto err;
}
if (reginfo->rootoid != NULL) {
/*
* + 1 to make the following code safe:
* reginfo->rootoid[reginfo->rootoid_len++] = 0;
* See also netsnmp_scalar_helper_handler().
*/
r->rootoid = malloc((reginfo->rootoid_len + 1) * sizeof(oid));
if (r->rootoid == NULL)
goto err;
memcpy(r->rootoid, reginfo->rootoid,
reginfo->rootoid_len * sizeof(oid));
}
r->handler = netsnmp_handler_dup(reginfo->handler);
if (r->handler == NULL)
goto err;
return r;
err:
netsnmp_handler_registration_free(r);
return NULL;
}

View File

@ -10,26 +10,26 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <signal.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <sys/types.h>
#include <stdio.h>
#include <fcntl.h>
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@ -49,9 +49,9 @@
#include "agentx/client.h"
#endif
netsnmp_feature_child_of(agent_index_all, libnetsnmpagent)
netsnmp_feature_child_of(agent_index_all, libnetsnmpagent);
netsnmp_feature_child_of(remove_index, agent_index_all)
netsnmp_feature_child_of(remove_index, agent_index_all);
/*
* Initial support for index allocation
@ -454,7 +454,7 @@ register_index(netsnmp_variable_list * varbind, int flags,
* Release an allocated index,
* to allow it to be used elsewhere
*/
netsnmp_feature_child_of(release_index,netsnmp_unused)
netsnmp_feature_child_of(release_index,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_RELEASE_INDEX
int
release_index(netsnmp_variable_list * varbind)
@ -597,7 +597,7 @@ unregister_index(netsnmp_variable_list * varbind, int remember,
return SNMP_ERR_NOERROR;
}
netsnmp_feature_child_of(unregister_indexes,netsnmp_unused)
netsnmp_feature_child_of(unregister_indexes,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_INDEXES
int
unregister_string_index(oid * name, size_t name_len, char *cp)
@ -704,7 +704,7 @@ dump_idx_registry(void)
}
}
netsnmp_feature_child_of(count_indexes, netsnmp_unused)
netsnmp_feature_child_of(count_indexes, netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_UNUSED
unsigned long
count_indexes(oid * name, size_t namelen, int include_unallocated)

View File

@ -10,15 +10,15 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#if HAVE_SYS_PARAM_H
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#else
#include <sys/types.h>
#endif
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -27,36 +27,36 @@
#include <ctype.h>
#include <errno.h>
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_NETINET_IN_SYSTM_H
#ifdef HAVE_NETINET_IN_SYSTM_H
#include <netinet/in_systm.h>
#endif
#if HAVE_NETINET_IP_H
#ifdef HAVE_NETINET_IP_H
#include <netinet/ip.h>
#endif
#ifdef NETSNMP_ENABLE_IPV6
#if HAVE_NETINET_IP6_H
#ifdef HAVE_NETINET_IP6_H
#include <netinet/ip6.h>
#endif
#endif
#if HAVE_SYS_QUEUE_H
#ifdef HAVE_SYS_QUEUE_H
#include <sys/queue.h>
#endif
#if HAVE_SYS_SOCKET_H
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#if HAVE_SYS_SOCKETVAR_H
#ifdef HAVE_SYS_SOCKETVAR_H
#ifndef dynix
#include <sys/socketvar.h>
#else
@ -64,31 +64,31 @@
#endif
#endif
#endif
#if HAVE_SYS_STREAM_H
#ifdef HAVE_SYS_STREAM_H
# ifdef sysv5UnixWare7
# define _KMEMUSER 1 /* <sys/stream.h> needs this for queue_t */
# endif
#include <sys/stream.h>
#endif
#if HAVE_NET_ROUTE_H
#ifdef HAVE_NET_ROUTE_H
#include <net/route.h>
#endif
#if HAVE_NETINET_IP_VAR_H
#ifdef HAVE_NETINET_IP_VAR_H
#include <netinet/ip_var.h>
#endif
#ifdef NETSNMP_ENABLE_IPV6
#if HAVE_NETNETSNMP_ENABLE_IPV6_IP6_VAR_H
#ifdef HAVE_NETNETSNMP_ENABLE_IPV6_IP6_VAR_H
#include <netinet6/ip6_var.h>
#endif
#endif
#if HAVE_NETINET_IN_PCB_H
#ifdef HAVE_NETINET_IN_PCB_H
#include <netinet/in_pcb.h>
#endif
#if HAVE_INET_MIB2_H
#ifdef HAVE_INET_MIB2_H
#include <inet/mib2.h>
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_PWD_H
@ -112,13 +112,38 @@
#include "agent_module_includes.h"
#include "mib_module_includes.h"
netsnmp_feature_child_of(agent_read_config_all, libnetsnmpagent)
netsnmp_feature_child_of(agent_read_config_all, libnetsnmpagent);
netsnmp_feature_child_of(snmpd_unregister_config_handler, agent_read_config_all)
netsnmp_feature_child_of(snmpd_unregister_config_handler, agent_read_config_all);
void netsnmp_set_agent_user_id(int uid)
{
static int agent_user_id = -1;
if (agent_user_id != -1 && uid != agent_user_id) {
snmp_log(LOG_ERR, "User ID has already been set -- can not change\n");
return;
}
agent_user_id = uid;
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_USERID, uid);
}
void netsnmp_set_agent_group_id(int gid)
{
static int agent_group_id = -1;
if (agent_group_id != -1 && gid != agent_group_id) {
snmp_log(LOG_ERR, "Group ID has already been set -- can not change\n");
return;
}
agent_group_id = gid;
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_GROUPID,
gid);
}
#ifdef HAVE_UNISTD_H
void
snmpd_set_agent_user(const char *token, char *cptr)
netsnmp_parse_agent_user(const char *token, char *cptr)
{
if (cptr[0] == '#') {
char *ecp;
@ -128,8 +153,7 @@ snmpd_set_agent_user(const char *token, char *cptr)
if (*ecp != 0) {
config_perror("Bad number");
} else {
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_USERID, uid);
netsnmp_set_agent_user_id(uid);
}
#if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
} else {
@ -137,8 +161,7 @@ snmpd_set_agent_user(const char *token, char *cptr)
info = getpwnam(cptr);
if (info)
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_USERID, info->pw_uid);
netsnmp_set_agent_user_id(info->pw_uid);
else
config_perror("User not found in passwd database");
endpwent();
@ -147,7 +170,7 @@ snmpd_set_agent_user(const char *token, char *cptr)
}
void
snmpd_set_agent_group(const char *token, char *cptr)
netsnmp_parse_agent_group(const char *token, char *cptr)
{
if (cptr[0] == '#') {
char *ecp;
@ -156,8 +179,7 @@ snmpd_set_agent_group(const char *token, char *cptr)
if (*ecp != 0) {
config_perror("Bad number");
} else {
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_GROUPID, gid);
netsnmp_set_agent_group_id(gid);
}
#if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
} else {
@ -165,8 +187,7 @@ snmpd_set_agent_group(const char *token, char *cptr)
info = getgrnam(cptr);
if (info)
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
netsnmp_set_agent_group_id(info->gr_gid);
else
config_perror("Group not found in group database");
endgrent();
@ -193,7 +214,6 @@ snmpd_set_agent_address(const char *token, char *cptr)
* append to the older specification string
*/
snprintf(buf, sizeof(buf), "%s,%s", ptr, cptr);
buf[sizeof(buf) - 1] = '\0';
} else {
strlcpy(buf, cptr, sizeof(buf));
}
@ -256,9 +276,9 @@ init_agent_read_config(const char *app)
NETSNMP_DS_AGENT_TRAP_ADDR);
#ifdef HAVE_UNISTD_H
register_app_config_handler("agentuser",
snmpd_set_agent_user, NULL, "userid");
netsnmp_parse_agent_user, NULL, "userid");
register_app_config_handler("agentgroup",
snmpd_set_agent_group, NULL, "groupid");
netsnmp_parse_agent_group, NULL, "groupid");
#endif
#ifndef NETSNMP_NO_LISTEN_SUPPORT
register_app_config_handler("agentaddress",
@ -333,7 +353,7 @@ snmpd_register_const_config_handler(const char *token,
}
#ifdef NETSNMP_FEATURE_REQUIRE_SNMPD_UNREGISTER_CONFIG_HANDLER
netsnmp_feature_require(unregister_app_config_handler)
netsnmp_feature_require(unregister_app_config_handler);
#endif /* NETSNMP_FEATURE_REQUIRE_SNMPD_UNREGISTER_CONFIG_HANDLER */
#ifndef NETSNMP_FEATURE_REMOVE_SNMPD_UNREGISTER_CONFIG_HANDLER

View File

@ -30,26 +30,26 @@
#include <net-snmp/net-snmp-features.h>
#include <signal.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <sys/types.h>
#include <stdio.h>
#include <fcntl.h>
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@ -73,9 +73,9 @@
#include "agentx/client.h"
#endif
netsnmp_feature_child_of(agent_registry_all, libnetsnmpagent)
netsnmp_feature_child_of(agent_registry_all, libnetsnmpagent);
netsnmp_feature_child_of(unregister_mib_table_row, agent_registry_all)
netsnmp_feature_child_of(unregister_mib_table_row, agent_registry_all);
/** @defgroup agent_lookup_cache Lookup cache, storing the registered OIDs.
* Maintain the cache used for locating sub-trees and OIDs.
@ -561,7 +561,7 @@ netsnmp_subtree_change_prev(netsnmp_subtree *ptr, netsnmp_subtree *theprev)
&ptr->oid_off);
}
netsnmp_feature_child_of(netsnmp_subtree_compare,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_subtree_compare,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_SUBTREE_COMPARE
/** Compares OIDs of given subtrees.
*
@ -1278,7 +1278,6 @@ netsnmp_register_mib(const char *moduleName,
reg_parms.range_ubound = range_ubound;
reg_parms.timeout = timeout;
reg_parms.flags = (u_char) flags;
reg_parms.contextName = context;
reg_parms.session = ss;
reg_parms.reginfo = reginfo;
reg_parms.contextName = context;
@ -2167,7 +2166,7 @@ netsnmp_acm_check_subtree(netsnmp_pdu *pdu, oid *name, size_t namelen)
return 1;
}
netsnmp_feature_child_of(get_session_for_oid,netsnmp_unused)
netsnmp_feature_child_of(get_session_for_oid,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_GET_SESSION_FOR_OID
netsnmp_session *
get_session_for_oid(const oid *name, size_t len, const char *context_name)
@ -2334,7 +2333,7 @@ dump_registry(void)
/* End of MIB registration code */
netsnmp_feature_child_of(register_signal, netsnmp_unused)
netsnmp_feature_child_of(register_signal, netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL
/** @defgroup agent_signals POSIX signals support for agents.

View File

@ -1,8 +1,8 @@
#include <net-snmp/net-snmp-config.h>
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>

View File

@ -25,34 +25,34 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#if HAVE_NETDB_H
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_SYS_SOCKET_H
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#include <net-snmp/utilities.h>
@ -75,13 +75,13 @@
#include "mibgroup/notification/snmpNotifyTable_data.h"
#endif
netsnmp_feature_child_of(agent_trap_all, libnetsnmpagent)
netsnmp_feature_child_of(agent_trap_all, libnetsnmpagent);
netsnmp_feature_child_of(trap_vars_with_context, agent_trap_all)
netsnmp_feature_child_of(remove_trap_session, agent_trap_all)
netsnmp_feature_child_of(trap_vars_with_context, agent_trap_all);
netsnmp_feature_child_of(remove_trap_session, agent_trap_all);
netsnmp_feature_child_of(send_v3trap,netsnmp_unused)
netsnmp_feature_child_of(send_trap_pdu,netsnmp_unused)
netsnmp_feature_child_of(send_v3trap,netsnmp_unused);
netsnmp_feature_child_of(send_trap_pdu,netsnmp_unused);
struct trap_sink {
netsnmp_session *sesp;
@ -92,11 +92,6 @@ struct trap_sink {
struct trap_sink *sinks = NULL;
#ifndef NETSNMP_DISABLE_SNMPV1
static int _v1_sessions = 0;
#endif /* NETSNMP_DISABLE_SNMPV1 */
static int _v2_sessions = 0;
const oid objid_enterprisetrap[] = { NETSNMP_NOTIFICATION_MIB };
const oid trap_version_id[] = { NETSNMP_SYSTEM_MIB };
const int enterprisetrap_len = OID_LENGTH(objid_enterprisetrap);
@ -159,55 +154,6 @@ free_trap_session(struct trap_sink *sp)
free(sp);
}
static void
_trap_version_incr(int version)
{
switch (version) {
#ifndef NETSNMP_DISABLE_SNMPV1
case SNMP_VERSION_1:
++_v1_sessions;
break;
#endif
#ifndef NETSNMP_DISABLE_SNMPV2C
case SNMP_VERSION_2c:
#endif
case SNMP_VERSION_3:
++_v2_sessions;
break;
default:
snmp_log(LOG_ERR, "unknown snmp version %d\n", version);
}
return;
}
static void
_trap_version_decr(int version)
{
switch (version) {
#ifndef NETSNMP_DISABLE_SNMPV1
case SNMP_VERSION_1:
if (--_v1_sessions < 0) {
snmp_log(LOG_ERR,"v1 session count < 0! fixed.\n");
_v1_sessions = 0;
}
break;
#endif
#ifndef NETSNMP_DISABLE_SNMPV2C
case SNMP_VERSION_2c:
#endif
case SNMP_VERSION_3:
if (--_v2_sessions < 0) {
snmp_log(LOG_ERR,"v2 session count < 0! fixed.\n");
_v2_sessions = 0;
}
break;
default:
snmp_log(LOG_ERR, "unknown snmp version %d\n", version);
}
return;
}
#ifndef NETSNMP_NO_TRAP_STATS
static void
_dump_trap_stats(netsnmp_session *sess)
@ -285,8 +231,6 @@ netsnmp_add_notification_session(netsnmp_session * ss, int pdutype,
sinks = new_sink;
}
_trap_version_incr(version);
return 1;
}
@ -338,7 +282,6 @@ remove_trap_session(netsnmp_session * ss)
} else {
sinks = sp->next;
}
_trap_version_decr(ss->version);
/*
* I don't believe you *really* want to close the session here;
* it may still be in use for other purposes. In particular this
@ -490,7 +433,6 @@ snmpd_free_trapsinks(void)
DEBUGMSGTL(("trap", "freeing trap sessions\n"));
while (sp) {
sinks = sinks->next;
_trap_version_decr(sp->version);
free_trap_session(sp);
sp = sinks;
}
@ -1025,11 +967,11 @@ netsnmp_send_traps(int trap, int specific,
}
}
#ifndef NETSNMP_DISABLE_SNMPV1
if (template_v1pdu && _v1_sessions)
if (template_v1pdu)
snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
SNMPD_CALLBACK_SEND_TRAP1, template_v1pdu);
#endif
if (template_v2pdu && _v2_sessions)
if (template_v2pdu)
snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
SNMPD_CALLBACK_SEND_TRAP2, template_v2pdu);
snmp_free_pdu(template_v1pdu);
@ -1219,8 +1161,19 @@ send_trap_to_sess(netsnmp_session * sess, netsnmp_pdu *template_pdu)
template_pdu->command, sess->version));
return;
}
DEBUGMSGTL(("trap", "sending trap type=%d, version=%ld\n",
template_pdu->command, sess->version));
DEBUGIF("trap") {
struct session_list *sessp = snmp_sess_pointer(sess);
netsnmp_transport *t = sessp->transport;
const void *dst = template_pdu->transport_data;
const int dst_len = template_pdu->transport_data_length;
char *peer = NULL;
if (t && t->f_fmtaddr)
peer = t->f_fmtaddr(t, dst, dst_len);
DEBUGMSGTL(("trap", "sending trap type=%d, version=%ld to %s\n",
template_pdu->command, sess->version, peer ? peer : "(?)"));
free(peer);
}
#ifndef NETSNMP_DISABLE_SNMPV1
if (sess->version == SNMP_VERSION_1 &&
@ -1603,8 +1556,7 @@ netsnmp_create_v3user_notification_session(const char *dest, const char *user,
engineId = tmp_engineId;
}
usmUser = usm_get_user(NETSNMP_REMOVE_CONST(u_char *,engineId),
engineId_len, NETSNMP_REMOVE_CONST(char *,user));
usmUser = usm_get_user(engineId, engineId_len, user);
if (NULL == usmUser) {
DEBUGMSGTL(("trap:v3user_notif_sess", "usmUser %s not found\n", user));
return NULL;
@ -1701,7 +1653,7 @@ netsnmp_create_v3user_notification_session(const char *dest, const char *user,
ss->version, notif_name, notif_tag,
notif_profile) != 1) {
DEBUGMSGTL(("trap:v3user_notif_sess", "add notification failed\n"));
snmp_sess_close(ss);
snmp_close(ss);
ss = NULL;
goto bail;
}
@ -1710,6 +1662,7 @@ netsnmp_create_v3user_notification_session(const char *dest, const char *user,
/** free any allocated mem in session */
SNMP_FREE(session.securityAuthProto);
SNMP_FREE(session.securityPrivProto);
SNMP_FREE(session.contextEngineID);
return ss;
}
@ -1735,14 +1688,17 @@ snmpd_parse_config_trapsess(const char *word, char *cptr)
if (strncmp(cp, "-profile", 8) == 0) {
cp = skip_token(cp);
cp = copy_nword(cp, tmp, SPRINT_MAX_LEN);
free(profile);
profile = strdup(tmp);
} else if (strncmp(cp, "-name", 5) == 0) {
cp = skip_token(cp);
cp = copy_nword(cp, tmp, SPRINT_MAX_LEN);
free(name);
name = strdup(tmp);
} else if (strncmp(cp, "-tag", 5) == 0) {
} else if (strncmp(cp, "-tag", 4) == 0) {
cp = skip_token(cp);
cp = copy_nword(cp, tmp, SPRINT_MAX_LEN);
free(tag);
tag = strdup(tmp);
} else
break;
@ -1835,6 +1791,7 @@ snmpd_parse_config_trapsess(const char *word, char *cptr)
ss->version, name, tag, profile);
cleanup:
netsnmp_cleanup_session(&session);
SNMP_FREE(clientaddr_save);
SNMP_FREE(profile);
SNMP_FREE(name);

View File

@ -1,24 +1,23 @@
#include <net-snmp/net-snmp-config.h>
#ifdef NETSNMP_CAN_USE_NLIST
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <netinet/in.h>
#ifdef HAVE_NLIST_H
#include <nlist.h>
#endif
#if HAVE_KVM_H
#ifdef HAVE_KVM_H
#include <kvm.h>
#elif defined(HAVE_NLIST_H)
#include <nlist.h>
#endif
#include <net-snmp/agent/auto_nlist.h>
@ -52,9 +51,6 @@ auto_nlist_value(const char *string)
}
}
if (*ptr == 0) {
#if !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
static char *n_name = NULL;
#endif
*ptr = (struct autonlist *) malloc(sizeof(struct autonlist));
memset(*ptr, 0, sizeof(struct autonlist));
it = *ptr;
@ -72,17 +68,17 @@ auto_nlist_value(const char *string)
#elif defined(freebsd9)
sprintf(__DECONST(char*, it->nl[0].n_name), "_%s", string);
#else
{
static char *name;
if (n_name != NULL)
free(n_name);
n_name = malloc(strlen(string) + 2);
if (n_name == NULL) {
snmp_log(LOG_ERR, "nlist err: failed to allocate memory");
return (-1);
free(name);
name = NULL;
if (asprintf(&name, "_%s", string) < 0) {
snmp_log(LOG_ERR, "nlist err: failed to allocate memory");
return -1;
}
it->nl[0].n_name = name;
}
snprintf(n_name, strlen(string) + 2, "_%s", string);
it->nl[0].n_name = (const char*)n_name;
#endif
it->nl[1].n_name = 0;
init_nlist(it->nl);
@ -104,7 +100,7 @@ auto_nlist_value(const char *string)
return (-1);
}
strcpy(n_name2, string);
it->nl[0].n_name = (const char*)n_name2;
it->nl[0].n_name = n_name2;
#endif
init_nlist(it->nl);
}
@ -150,7 +146,7 @@ static void
init_nlist(struct nlist nl[])
{
int ret;
#if HAVE_KVM_OPENFILES
#ifdef HAVE_KVM_OPENFILES
kvm_t *kernel;
char kvm_errbuf[4096];

View File

@ -1,6 +1,9 @@
# DO NOT DELETE THIS LINE -- make depend depends on it.
./all_helpers.lo: ../../include/net-snmp/net-snmp-config.h
./all_helpers.lo: ../../include/net-snmp/system/linux.h
./all_helpers.lo: ../../include/net-snmp/system/sysv.h
./all_helpers.lo: ../../include/net-snmp/system/generic.h
./all_helpers.lo: ../../include/net-snmp/machine/generic.h
./all_helpers.lo: ../../include/net-snmp/net-snmp-features.h
./all_helpers.lo: ../../include/net-snmp/net-snmp-includes.h
@ -30,7 +33,9 @@
./all_helpers.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./all_helpers.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./all_helpers.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./all_helpers.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./all_helpers.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./all_helpers.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./all_helpers.lo: ../../include/net-snmp/library/ucd_compat.h
./all_helpers.lo: ../../include/net-snmp/library/mib.h
./all_helpers.lo: ../../include/net-snmp/mib_api.h
@ -49,7 +54,6 @@
./all_helpers.lo: ../../include/net-snmp/library/data_list.h
./all_helpers.lo: ../../include/net-snmp/library/check_varbind.h
./all_helpers.lo: ../../include/net-snmp/library/container.h
./all_helpers.lo: ../../include/net-snmp/library/factory.h
./all_helpers.lo: ../../include/net-snmp/library/container_binary_array.h
./all_helpers.lo: ../../include/net-snmp/library/container_list_ssll.h
./all_helpers.lo: ../../include/net-snmp/library/container_iterator.h
@ -71,8 +75,8 @@
./all_helpers.lo: ../../include/net-snmp/library/lcd_time.h
./all_helpers.lo: ../../include/net-snmp/library/snmp_secmod.h
./all_helpers.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./all_helpers.lo: ../../include/net-snmp/library/snmptsm.h
./all_helpers.lo: ../../include/net-snmp/library/snmpusm.h
./all_helpers.lo: ../../include/net-snmp/library/snmptsm.h
./all_helpers.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./all_helpers.lo: ../../include/net-snmp/agent/mib_module_config.h
./all_helpers.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -140,7 +144,9 @@
./baby_steps.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./baby_steps.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./baby_steps.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./baby_steps.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./baby_steps.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./baby_steps.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./baby_steps.lo: ../../include/net-snmp/library/ucd_compat.h
./baby_steps.lo: ../../include/net-snmp/library/mib.h
./baby_steps.lo: ../../include/net-snmp/mib_api.h
@ -159,7 +165,6 @@
./baby_steps.lo: ../../include/net-snmp/library/data_list.h
./baby_steps.lo: ../../include/net-snmp/library/check_varbind.h
./baby_steps.lo: ../../include/net-snmp/library/container.h
./baby_steps.lo: ../../include/net-snmp/library/factory.h
./baby_steps.lo: ../../include/net-snmp/library/container_binary_array.h
./baby_steps.lo: ../../include/net-snmp/library/container_list_ssll.h
./baby_steps.lo: ../../include/net-snmp/library/container_iterator.h
@ -180,8 +185,8 @@
./baby_steps.lo: ../../include/net-snmp/library/lcd_time.h
./baby_steps.lo: ../../include/net-snmp/library/snmp_secmod.h
./baby_steps.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./baby_steps.lo: ../../include/net-snmp/library/snmptsm.h
./baby_steps.lo: ../../include/net-snmp/library/snmpusm.h
./baby_steps.lo: ../../include/net-snmp/library/snmptsm.h
./baby_steps.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./baby_steps.lo: ../../include/net-snmp/agent/mib_module_config.h
./baby_steps.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -247,7 +252,9 @@
./bulk_to_next.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./bulk_to_next.lo: ../../include/net-snmp/library/ucd_compat.h
./bulk_to_next.lo: ../../include/net-snmp/library/mib.h
./bulk_to_next.lo: ../../include/net-snmp/mib_api.h
@ -267,7 +274,6 @@
./bulk_to_next.lo: ../../include/net-snmp/library/data_list.h
./bulk_to_next.lo: ../../include/net-snmp/library/check_varbind.h
./bulk_to_next.lo: ../../include/net-snmp/library/container.h
./bulk_to_next.lo: ../../include/net-snmp/library/factory.h
./bulk_to_next.lo: ../../include/net-snmp/library/container_binary_array.h
./bulk_to_next.lo: ../../include/net-snmp/library/container_list_ssll.h
./bulk_to_next.lo: ../../include/net-snmp/library/container_iterator.h
@ -288,8 +294,8 @@
./bulk_to_next.lo: ../../include/net-snmp/library/lcd_time.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmp_secmod.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmptsm.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmpusm.h
./bulk_to_next.lo: ../../include/net-snmp/library/snmptsm.h
./bulk_to_next.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./bulk_to_next.lo: ../../include/net-snmp/agent/mib_module_config.h
./bulk_to_next.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -356,7 +362,9 @@
./cache_handler.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./cache_handler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./cache_handler.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./cache_handler.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./cache_handler.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./cache_handler.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./cache_handler.lo: ../../include/net-snmp/library/ucd_compat.h
./cache_handler.lo: ../../include/net-snmp/library/mib.h
./cache_handler.lo: ../../include/net-snmp/mib_api.h
@ -375,7 +383,6 @@
./cache_handler.lo: ../../include/net-snmp/library/data_list.h
./cache_handler.lo: ../../include/net-snmp/library/check_varbind.h
./cache_handler.lo: ../../include/net-snmp/library/container.h
./cache_handler.lo: ../../include/net-snmp/library/factory.h
./cache_handler.lo: ../../include/net-snmp/library/container_binary_array.h
./cache_handler.lo: ../../include/net-snmp/library/container_list_ssll.h
./cache_handler.lo: ../../include/net-snmp/library/container_iterator.h
@ -396,8 +403,8 @@
./cache_handler.lo: ../../include/net-snmp/library/lcd_time.h
./cache_handler.lo: ../../include/net-snmp/library/snmp_secmod.h
./cache_handler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./cache_handler.lo: ../../include/net-snmp/library/snmptsm.h
./cache_handler.lo: ../../include/net-snmp/library/snmpusm.h
./cache_handler.lo: ../../include/net-snmp/library/snmptsm.h
./cache_handler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./cache_handler.lo: ../../include/net-snmp/agent/mib_module_config.h
./cache_handler.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -463,7 +470,9 @@
./debug_handler.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./debug_handler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./debug_handler.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./debug_handler.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./debug_handler.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./debug_handler.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./debug_handler.lo: ../../include/net-snmp/library/ucd_compat.h
./debug_handler.lo: ../../include/net-snmp/library/mib.h
./debug_handler.lo: ../../include/net-snmp/mib_api.h
@ -483,7 +492,6 @@
./debug_handler.lo: ../../include/net-snmp/library/data_list.h
./debug_handler.lo: ../../include/net-snmp/library/check_varbind.h
./debug_handler.lo: ../../include/net-snmp/library/container.h
./debug_handler.lo: ../../include/net-snmp/library/factory.h
./debug_handler.lo: ../../include/net-snmp/library/container_binary_array.h
./debug_handler.lo: ../../include/net-snmp/library/container_list_ssll.h
./debug_handler.lo: ../../include/net-snmp/library/container_iterator.h
@ -504,8 +512,8 @@
./debug_handler.lo: ../../include/net-snmp/library/lcd_time.h
./debug_handler.lo: ../../include/net-snmp/library/snmp_secmod.h
./debug_handler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./debug_handler.lo: ../../include/net-snmp/library/snmptsm.h
./debug_handler.lo: ../../include/net-snmp/library/snmpusm.h
./debug_handler.lo: ../../include/net-snmp/library/snmptsm.h
./debug_handler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./debug_handler.lo: ../../include/net-snmp/agent/mib_module_config.h
./debug_handler.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -572,7 +580,9 @@
./instance.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./instance.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./instance.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./instance.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./instance.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./instance.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./instance.lo: ../../include/net-snmp/library/ucd_compat.h
./instance.lo: ../../include/net-snmp/library/mib.h
./instance.lo: ../../include/net-snmp/mib_api.h
@ -591,7 +601,6 @@
./instance.lo: ../../include/net-snmp/library/data_list.h
./instance.lo: ../../include/net-snmp/library/check_varbind.h
./instance.lo: ../../include/net-snmp/library/container.h
./instance.lo: ../../include/net-snmp/library/factory.h
./instance.lo: ../../include/net-snmp/library/container_binary_array.h
./instance.lo: ../../include/net-snmp/library/container_list_ssll.h
./instance.lo: ../../include/net-snmp/library/container_iterator.h
@ -612,8 +621,8 @@
./instance.lo: ../../include/net-snmp/library/lcd_time.h
./instance.lo: ../../include/net-snmp/library/snmp_secmod.h
./instance.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./instance.lo: ../../include/net-snmp/library/snmptsm.h
./instance.lo: ../../include/net-snmp/library/snmpusm.h
./instance.lo: ../../include/net-snmp/library/snmptsm.h
./instance.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./instance.lo: ../../include/net-snmp/agent/mib_module_config.h
./instance.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -680,7 +689,9 @@
./mode_end_call.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./mode_end_call.lo: ../../include/net-snmp/library/ucd_compat.h
./mode_end_call.lo: ../../include/net-snmp/library/mib.h
./mode_end_call.lo: ../../include/net-snmp/mib_api.h
@ -699,7 +710,6 @@
./mode_end_call.lo: ../../include/net-snmp/library/data_list.h
./mode_end_call.lo: ../../include/net-snmp/library/check_varbind.h
./mode_end_call.lo: ../../include/net-snmp/library/container.h
./mode_end_call.lo: ../../include/net-snmp/library/factory.h
./mode_end_call.lo: ../../include/net-snmp/library/container_binary_array.h
./mode_end_call.lo: ../../include/net-snmp/library/container_list_ssll.h
./mode_end_call.lo: ../../include/net-snmp/library/container_iterator.h
@ -720,8 +730,8 @@
./mode_end_call.lo: ../../include/net-snmp/library/lcd_time.h
./mode_end_call.lo: ../../include/net-snmp/library/snmp_secmod.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./mode_end_call.lo: ../../include/net-snmp/library/snmptsm.h
./mode_end_call.lo: ../../include/net-snmp/library/snmpusm.h
./mode_end_call.lo: ../../include/net-snmp/library/snmptsm.h
./mode_end_call.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./mode_end_call.lo: ../../include/net-snmp/agent/mib_module_config.h
./mode_end_call.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -787,7 +797,9 @@
./multiplexer.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./multiplexer.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./multiplexer.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./multiplexer.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./multiplexer.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./multiplexer.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./multiplexer.lo: ../../include/net-snmp/library/ucd_compat.h
./multiplexer.lo: ../../include/net-snmp/library/mib.h
./multiplexer.lo: ../../include/net-snmp/mib_api.h
@ -807,7 +819,6 @@
./multiplexer.lo: ../../include/net-snmp/library/data_list.h
./multiplexer.lo: ../../include/net-snmp/library/check_varbind.h
./multiplexer.lo: ../../include/net-snmp/library/container.h
./multiplexer.lo: ../../include/net-snmp/library/factory.h
./multiplexer.lo: ../../include/net-snmp/library/container_binary_array.h
./multiplexer.lo: ../../include/net-snmp/library/container_list_ssll.h
./multiplexer.lo: ../../include/net-snmp/library/container_iterator.h
@ -828,8 +839,8 @@
./multiplexer.lo: ../../include/net-snmp/library/lcd_time.h
./multiplexer.lo: ../../include/net-snmp/library/snmp_secmod.h
./multiplexer.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./multiplexer.lo: ../../include/net-snmp/library/snmptsm.h
./multiplexer.lo: ../../include/net-snmp/library/snmpusm.h
./multiplexer.lo: ../../include/net-snmp/library/snmptsm.h
./multiplexer.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./multiplexer.lo: ../../include/net-snmp/agent/mib_module_config.h
./multiplexer.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -895,7 +906,9 @@
./null.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./null.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./null.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./null.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./null.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./null.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./null.lo: ../../include/net-snmp/library/ucd_compat.h
./null.lo: ../../include/net-snmp/library/mib.h
./null.lo: ../../include/net-snmp/mib_api.h
@ -915,7 +928,6 @@
./null.lo: ../../include/net-snmp/library/data_list.h
./null.lo: ../../include/net-snmp/library/check_varbind.h
./null.lo: ../../include/net-snmp/library/container.h
./null.lo: ../../include/net-snmp/library/factory.h
./null.lo: ../../include/net-snmp/library/container_binary_array.h
./null.lo: ../../include/net-snmp/library/container_list_ssll.h
./null.lo: ../../include/net-snmp/library/container_iterator.h
@ -936,8 +948,8 @@
./null.lo: ../../include/net-snmp/library/lcd_time.h
./null.lo: ../../include/net-snmp/library/snmp_secmod.h
./null.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./null.lo: ../../include/net-snmp/library/snmptsm.h
./null.lo: ../../include/net-snmp/library/snmpusm.h
./null.lo: ../../include/net-snmp/library/snmptsm.h
./null.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./null.lo: ../../include/net-snmp/agent/mib_module_config.h
./null.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1003,7 +1015,9 @@
./old_api.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./old_api.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./old_api.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./old_api.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./old_api.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./old_api.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./old_api.lo: ../../include/net-snmp/library/ucd_compat.h
./old_api.lo: ../../include/net-snmp/library/mib.h
./old_api.lo: ../../include/net-snmp/mib_api.h
@ -1023,7 +1037,6 @@
./old_api.lo: ../../include/net-snmp/library/data_list.h
./old_api.lo: ../../include/net-snmp/library/check_varbind.h
./old_api.lo: ../../include/net-snmp/library/container.h
./old_api.lo: ../../include/net-snmp/library/factory.h
./old_api.lo: ../../include/net-snmp/library/container_binary_array.h
./old_api.lo: ../../include/net-snmp/library/container_list_ssll.h
./old_api.lo: ../../include/net-snmp/library/container_iterator.h
@ -1044,8 +1057,8 @@
./old_api.lo: ../../include/net-snmp/library/lcd_time.h
./old_api.lo: ../../include/net-snmp/library/snmp_secmod.h
./old_api.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./old_api.lo: ../../include/net-snmp/library/snmptsm.h
./old_api.lo: ../../include/net-snmp/library/snmpusm.h
./old_api.lo: ../../include/net-snmp/library/snmptsm.h
./old_api.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./old_api.lo: ../../include/net-snmp/agent/mib_module_config.h
./old_api.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1112,7 +1125,9 @@
./read_only.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./read_only.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./read_only.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./read_only.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./read_only.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./read_only.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./read_only.lo: ../../include/net-snmp/library/ucd_compat.h
./read_only.lo: ../../include/net-snmp/library/mib.h
./read_only.lo: ../../include/net-snmp/mib_api.h
@ -1132,7 +1147,6 @@
./read_only.lo: ../../include/net-snmp/library/data_list.h
./read_only.lo: ../../include/net-snmp/library/check_varbind.h
./read_only.lo: ../../include/net-snmp/library/container.h
./read_only.lo: ../../include/net-snmp/library/factory.h
./read_only.lo: ../../include/net-snmp/library/container_binary_array.h
./read_only.lo: ../../include/net-snmp/library/container_list_ssll.h
./read_only.lo: ../../include/net-snmp/library/container_iterator.h
@ -1153,8 +1167,8 @@
./read_only.lo: ../../include/net-snmp/library/lcd_time.h
./read_only.lo: ../../include/net-snmp/library/snmp_secmod.h
./read_only.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./read_only.lo: ../../include/net-snmp/library/snmptsm.h
./read_only.lo: ../../include/net-snmp/library/snmpusm.h
./read_only.lo: ../../include/net-snmp/library/snmptsm.h
./read_only.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./read_only.lo: ../../include/net-snmp/agent/mib_module_config.h
./read_only.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1221,7 +1235,9 @@
./row_merge.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./row_merge.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./row_merge.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./row_merge.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./row_merge.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./row_merge.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./row_merge.lo: ../../include/net-snmp/library/ucd_compat.h
./row_merge.lo: ../../include/net-snmp/library/mib.h
./row_merge.lo: ../../include/net-snmp/mib_api.h
@ -1240,7 +1256,6 @@
./row_merge.lo: ../../include/net-snmp/library/data_list.h
./row_merge.lo: ../../include/net-snmp/library/check_varbind.h
./row_merge.lo: ../../include/net-snmp/library/container.h
./row_merge.lo: ../../include/net-snmp/library/factory.h
./row_merge.lo: ../../include/net-snmp/library/container_binary_array.h
./row_merge.lo: ../../include/net-snmp/library/container_list_ssll.h
./row_merge.lo: ../../include/net-snmp/library/container_iterator.h
@ -1261,8 +1276,8 @@
./row_merge.lo: ../../include/net-snmp/library/lcd_time.h
./row_merge.lo: ../../include/net-snmp/library/snmp_secmod.h
./row_merge.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./row_merge.lo: ../../include/net-snmp/library/snmptsm.h
./row_merge.lo: ../../include/net-snmp/library/snmpusm.h
./row_merge.lo: ../../include/net-snmp/library/snmptsm.h
./row_merge.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./row_merge.lo: ../../include/net-snmp/agent/mib_module_config.h
./row_merge.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1328,7 +1343,9 @@
./scalar.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./scalar.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./scalar.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./scalar.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./scalar.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./scalar.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./scalar.lo: ../../include/net-snmp/library/ucd_compat.h
./scalar.lo: ../../include/net-snmp/library/mib.h
./scalar.lo: ../../include/net-snmp/mib_api.h
@ -1348,7 +1365,6 @@
./scalar.lo: ../../include/net-snmp/library/data_list.h
./scalar.lo: ../../include/net-snmp/library/check_varbind.h
./scalar.lo: ../../include/net-snmp/library/container.h
./scalar.lo: ../../include/net-snmp/library/factory.h
./scalar.lo: ../../include/net-snmp/library/container_binary_array.h
./scalar.lo: ../../include/net-snmp/library/container_list_ssll.h
./scalar.lo: ../../include/net-snmp/library/container_iterator.h
@ -1369,8 +1385,8 @@
./scalar.lo: ../../include/net-snmp/library/lcd_time.h
./scalar.lo: ../../include/net-snmp/library/snmp_secmod.h
./scalar.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./scalar.lo: ../../include/net-snmp/library/snmptsm.h
./scalar.lo: ../../include/net-snmp/library/snmpusm.h
./scalar.lo: ../../include/net-snmp/library/snmptsm.h
./scalar.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./scalar.lo: ../../include/net-snmp/agent/mib_module_config.h
./scalar.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1436,7 +1452,9 @@
./scalar_group.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./scalar_group.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./scalar_group.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./scalar_group.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./scalar_group.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./scalar_group.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./scalar_group.lo: ../../include/net-snmp/library/ucd_compat.h
./scalar_group.lo: ../../include/net-snmp/library/mib.h
./scalar_group.lo: ../../include/net-snmp/mib_api.h
@ -1456,7 +1474,6 @@
./scalar_group.lo: ../../include/net-snmp/library/data_list.h
./scalar_group.lo: ../../include/net-snmp/library/check_varbind.h
./scalar_group.lo: ../../include/net-snmp/library/container.h
./scalar_group.lo: ../../include/net-snmp/library/factory.h
./scalar_group.lo: ../../include/net-snmp/library/container_binary_array.h
./scalar_group.lo: ../../include/net-snmp/library/container_list_ssll.h
./scalar_group.lo: ../../include/net-snmp/library/container_iterator.h
@ -1477,8 +1494,8 @@
./scalar_group.lo: ../../include/net-snmp/library/lcd_time.h
./scalar_group.lo: ../../include/net-snmp/library/snmp_secmod.h
./scalar_group.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./scalar_group.lo: ../../include/net-snmp/library/snmptsm.h
./scalar_group.lo: ../../include/net-snmp/library/snmpusm.h
./scalar_group.lo: ../../include/net-snmp/library/snmptsm.h
./scalar_group.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./scalar_group.lo: ../../include/net-snmp/agent/mib_module_config.h
./scalar_group.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1544,7 +1561,9 @@
./serialize.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./serialize.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./serialize.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./serialize.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./serialize.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./serialize.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./serialize.lo: ../../include/net-snmp/library/ucd_compat.h
./serialize.lo: ../../include/net-snmp/library/mib.h
./serialize.lo: ../../include/net-snmp/mib_api.h
@ -1564,7 +1583,6 @@
./serialize.lo: ../../include/net-snmp/library/data_list.h
./serialize.lo: ../../include/net-snmp/library/check_varbind.h
./serialize.lo: ../../include/net-snmp/library/container.h
./serialize.lo: ../../include/net-snmp/library/factory.h
./serialize.lo: ../../include/net-snmp/library/container_binary_array.h
./serialize.lo: ../../include/net-snmp/library/container_list_ssll.h
./serialize.lo: ../../include/net-snmp/library/container_iterator.h
@ -1585,8 +1603,8 @@
./serialize.lo: ../../include/net-snmp/library/lcd_time.h
./serialize.lo: ../../include/net-snmp/library/snmp_secmod.h
./serialize.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./serialize.lo: ../../include/net-snmp/library/snmptsm.h
./serialize.lo: ../../include/net-snmp/library/snmpusm.h
./serialize.lo: ../../include/net-snmp/library/snmptsm.h
./serialize.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./serialize.lo: ../../include/net-snmp/agent/mib_module_config.h
./serialize.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1653,7 +1671,9 @@
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/ucd_compat.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/mib.h
./snmp_get_statistic.lo: ../../include/net-snmp/mib_api.h
@ -1672,7 +1692,6 @@
./snmp_get_statistic.lo: ../../include/net-snmp/library/data_list.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/check_varbind.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/container.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/factory.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/container_binary_array.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/container_list_ssll.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/container_iterator.h
@ -1693,8 +1712,8 @@
./snmp_get_statistic.lo: ../../include/net-snmp/library/lcd_time.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmp_secmod.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmptsm.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpusm.h
./snmp_get_statistic.lo: ../../include/net-snmp/library/snmptsm.h
./snmp_get_statistic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./snmp_get_statistic.lo: ../../include/net-snmp/agent/mib_module_config.h
./snmp_get_statistic.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1761,7 +1780,9 @@
./stash_cache.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./stash_cache.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./stash_cache.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./stash_cache.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./stash_cache.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./stash_cache.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./stash_cache.lo: ../../include/net-snmp/library/ucd_compat.h
./stash_cache.lo: ../../include/net-snmp/library/mib.h
./stash_cache.lo: ../../include/net-snmp/mib_api.h
@ -1780,7 +1801,6 @@
./stash_cache.lo: ../../include/net-snmp/library/data_list.h
./stash_cache.lo: ../../include/net-snmp/library/check_varbind.h
./stash_cache.lo: ../../include/net-snmp/library/container.h
./stash_cache.lo: ../../include/net-snmp/library/factory.h
./stash_cache.lo: ../../include/net-snmp/library/container_binary_array.h
./stash_cache.lo: ../../include/net-snmp/library/container_list_ssll.h
./stash_cache.lo: ../../include/net-snmp/library/container_iterator.h
@ -1801,8 +1821,8 @@
./stash_cache.lo: ../../include/net-snmp/library/lcd_time.h
./stash_cache.lo: ../../include/net-snmp/library/snmp_secmod.h
./stash_cache.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./stash_cache.lo: ../../include/net-snmp/library/snmptsm.h
./stash_cache.lo: ../../include/net-snmp/library/snmpusm.h
./stash_cache.lo: ../../include/net-snmp/library/snmptsm.h
./stash_cache.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./stash_cache.lo: ../../include/net-snmp/agent/mib_module_config.h
./stash_cache.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1871,7 +1891,9 @@
./stash_to_next.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./stash_to_next.lo: ../../include/net-snmp/library/ucd_compat.h
./stash_to_next.lo: ../../include/net-snmp/library/mib.h
./stash_to_next.lo: ../../include/net-snmp/mib_api.h
@ -1890,7 +1912,6 @@
./stash_to_next.lo: ../../include/net-snmp/library/data_list.h
./stash_to_next.lo: ../../include/net-snmp/library/check_varbind.h
./stash_to_next.lo: ../../include/net-snmp/library/container.h
./stash_to_next.lo: ../../include/net-snmp/library/factory.h
./stash_to_next.lo: ../../include/net-snmp/library/container_binary_array.h
./stash_to_next.lo: ../../include/net-snmp/library/container_list_ssll.h
./stash_to_next.lo: ../../include/net-snmp/library/container_iterator.h
@ -1911,8 +1932,8 @@
./stash_to_next.lo: ../../include/net-snmp/library/lcd_time.h
./stash_to_next.lo: ../../include/net-snmp/library/snmp_secmod.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./stash_to_next.lo: ../../include/net-snmp/library/snmptsm.h
./stash_to_next.lo: ../../include/net-snmp/library/snmpusm.h
./stash_to_next.lo: ../../include/net-snmp/library/snmptsm.h
./stash_to_next.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./stash_to_next.lo: ../../include/net-snmp/agent/mib_module_config.h
./stash_to_next.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -1981,7 +2002,9 @@
./table.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table.lo: ../../include/net-snmp/library/ucd_compat.h
./table.lo: ../../include/net-snmp/library/mib.h
./table.lo: ../../include/net-snmp/mib_api.h
@ -2000,7 +2023,6 @@
./table.lo: ../../include/net-snmp/library/data_list.h
./table.lo: ../../include/net-snmp/library/check_varbind.h
./table.lo: ../../include/net-snmp/library/container.h
./table.lo: ../../include/net-snmp/library/factory.h
./table.lo: ../../include/net-snmp/library/container_binary_array.h
./table.lo: ../../include/net-snmp/library/container_list_ssll.h
./table.lo: ../../include/net-snmp/library/container_iterator.h
@ -2021,8 +2043,8 @@
./table.lo: ../../include/net-snmp/library/lcd_time.h
./table.lo: ../../include/net-snmp/library/snmp_secmod.h
./table.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table.lo: ../../include/net-snmp/library/snmptsm.h
./table.lo: ../../include/net-snmp/library/snmpusm.h
./table.lo: ../../include/net-snmp/library/snmptsm.h
./table.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table.lo: ../../include/net-snmp/agent/mib_module_config.h
./table.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2089,7 +2111,9 @@
./table_array.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_array.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_array.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_array.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_array.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_array.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_array.lo: ../../include/net-snmp/library/ucd_compat.h
./table_array.lo: ../../include/net-snmp/library/mib.h
./table_array.lo: ../../include/net-snmp/mib_api.h
@ -2108,7 +2132,6 @@
./table_array.lo: ../../include/net-snmp/library/data_list.h
./table_array.lo: ../../include/net-snmp/library/check_varbind.h
./table_array.lo: ../../include/net-snmp/library/container.h
./table_array.lo: ../../include/net-snmp/library/factory.h
./table_array.lo: ../../include/net-snmp/library/container_binary_array.h
./table_array.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_array.lo: ../../include/net-snmp/library/container_iterator.h
@ -2129,8 +2152,8 @@
./table_array.lo: ../../include/net-snmp/library/lcd_time.h
./table_array.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_array.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_array.lo: ../../include/net-snmp/library/snmptsm.h
./table_array.lo: ../../include/net-snmp/library/snmpusm.h
./table_array.lo: ../../include/net-snmp/library/snmptsm.h
./table_array.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_array.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_array.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2197,7 +2220,9 @@
./table_container.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_container.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_container.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_container.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_container.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_container.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_container.lo: ../../include/net-snmp/library/ucd_compat.h
./table_container.lo: ../../include/net-snmp/library/mib.h
./table_container.lo: ../../include/net-snmp/mib_api.h
@ -2216,7 +2241,6 @@
./table_container.lo: ../../include/net-snmp/library/data_list.h
./table_container.lo: ../../include/net-snmp/library/check_varbind.h
./table_container.lo: ../../include/net-snmp/library/container.h
./table_container.lo: ../../include/net-snmp/library/factory.h
./table_container.lo: ../../include/net-snmp/library/container_binary_array.h
./table_container.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_container.lo: ../../include/net-snmp/library/container_iterator.h
@ -2237,8 +2261,8 @@
./table_container.lo: ../../include/net-snmp/library/lcd_time.h
./table_container.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_container.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_container.lo: ../../include/net-snmp/library/snmptsm.h
./table_container.lo: ../../include/net-snmp/library/snmpusm.h
./table_container.lo: ../../include/net-snmp/library/snmptsm.h
./table_container.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_container.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_container.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2305,7 +2329,9 @@
./table_data.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_data.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_data.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_data.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_data.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_data.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_data.lo: ../../include/net-snmp/library/ucd_compat.h
./table_data.lo: ../../include/net-snmp/library/mib.h
./table_data.lo: ../../include/net-snmp/mib_api.h
@ -2324,7 +2350,6 @@
./table_data.lo: ../../include/net-snmp/library/data_list.h
./table_data.lo: ../../include/net-snmp/library/check_varbind.h
./table_data.lo: ../../include/net-snmp/library/container.h
./table_data.lo: ../../include/net-snmp/library/factory.h
./table_data.lo: ../../include/net-snmp/library/container_binary_array.h
./table_data.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_data.lo: ../../include/net-snmp/library/container_iterator.h
@ -2345,8 +2370,8 @@
./table_data.lo: ../../include/net-snmp/library/lcd_time.h
./table_data.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_data.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_data.lo: ../../include/net-snmp/library/snmptsm.h
./table_data.lo: ../../include/net-snmp/library/snmpusm.h
./table_data.lo: ../../include/net-snmp/library/snmptsm.h
./table_data.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_data.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_data.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2413,7 +2438,9 @@
./table_dataset.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_dataset.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_dataset.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_dataset.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_dataset.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_dataset.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_dataset.lo: ../../include/net-snmp/library/ucd_compat.h
./table_dataset.lo: ../../include/net-snmp/library/mib.h
./table_dataset.lo: ../../include/net-snmp/mib_api.h
@ -2432,7 +2459,6 @@
./table_dataset.lo: ../../include/net-snmp/library/data_list.h
./table_dataset.lo: ../../include/net-snmp/library/check_varbind.h
./table_dataset.lo: ../../include/net-snmp/library/container.h
./table_dataset.lo: ../../include/net-snmp/library/factory.h
./table_dataset.lo: ../../include/net-snmp/library/container_binary_array.h
./table_dataset.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_dataset.lo: ../../include/net-snmp/library/container_iterator.h
@ -2453,8 +2479,8 @@
./table_dataset.lo: ../../include/net-snmp/library/lcd_time.h
./table_dataset.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_dataset.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_dataset.lo: ../../include/net-snmp/library/snmptsm.h
./table_dataset.lo: ../../include/net-snmp/library/snmpusm.h
./table_dataset.lo: ../../include/net-snmp/library/snmptsm.h
./table_dataset.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_dataset.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_dataset.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2521,7 +2547,9 @@
./table_iterator.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_iterator.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_iterator.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_iterator.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_iterator.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_iterator.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_iterator.lo: ../../include/net-snmp/library/ucd_compat.h
./table_iterator.lo: ../../include/net-snmp/library/mib.h
./table_iterator.lo: ../../include/net-snmp/mib_api.h
@ -2540,7 +2568,6 @@
./table_iterator.lo: ../../include/net-snmp/library/data_list.h
./table_iterator.lo: ../../include/net-snmp/library/check_varbind.h
./table_iterator.lo: ../../include/net-snmp/library/container.h
./table_iterator.lo: ../../include/net-snmp/library/factory.h
./table_iterator.lo: ../../include/net-snmp/library/container_binary_array.h
./table_iterator.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_iterator.lo: ../../include/net-snmp/library/container_iterator.h
@ -2561,8 +2588,8 @@
./table_iterator.lo: ../../include/net-snmp/library/lcd_time.h
./table_iterator.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_iterator.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_iterator.lo: ../../include/net-snmp/library/snmptsm.h
./table_iterator.lo: ../../include/net-snmp/library/snmpusm.h
./table_iterator.lo: ../../include/net-snmp/library/snmptsm.h
./table_iterator.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_iterator.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_iterator.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2630,7 +2657,9 @@
./table_row.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_row.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_row.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_row.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_row.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_row.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_row.lo: ../../include/net-snmp/library/ucd_compat.h
./table_row.lo: ../../include/net-snmp/library/mib.h
./table_row.lo: ../../include/net-snmp/mib_api.h
@ -2649,7 +2678,6 @@
./table_row.lo: ../../include/net-snmp/library/data_list.h
./table_row.lo: ../../include/net-snmp/library/check_varbind.h
./table_row.lo: ../../include/net-snmp/library/container.h
./table_row.lo: ../../include/net-snmp/library/factory.h
./table_row.lo: ../../include/net-snmp/library/container_binary_array.h
./table_row.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_row.lo: ../../include/net-snmp/library/container_iterator.h
@ -2670,8 +2698,8 @@
./table_row.lo: ../../include/net-snmp/library/lcd_time.h
./table_row.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_row.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_row.lo: ../../include/net-snmp/library/snmptsm.h
./table_row.lo: ../../include/net-snmp/library/snmpusm.h
./table_row.lo: ../../include/net-snmp/library/snmptsm.h
./table_row.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_row.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_row.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2738,7 +2766,9 @@
./table_tdata.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./table_tdata.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./table_tdata.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./table_tdata.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./table_tdata.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./table_tdata.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./table_tdata.lo: ../../include/net-snmp/library/ucd_compat.h
./table_tdata.lo: ../../include/net-snmp/library/mib.h
./table_tdata.lo: ../../include/net-snmp/mib_api.h
@ -2757,7 +2787,6 @@
./table_tdata.lo: ../../include/net-snmp/library/data_list.h
./table_tdata.lo: ../../include/net-snmp/library/check_varbind.h
./table_tdata.lo: ../../include/net-snmp/library/container.h
./table_tdata.lo: ../../include/net-snmp/library/factory.h
./table_tdata.lo: ../../include/net-snmp/library/container_binary_array.h
./table_tdata.lo: ../../include/net-snmp/library/container_list_ssll.h
./table_tdata.lo: ../../include/net-snmp/library/container_iterator.h
@ -2778,8 +2807,8 @@
./table_tdata.lo: ../../include/net-snmp/library/lcd_time.h
./table_tdata.lo: ../../include/net-snmp/library/snmp_secmod.h
./table_tdata.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./table_tdata.lo: ../../include/net-snmp/library/snmptsm.h
./table_tdata.lo: ../../include/net-snmp/library/snmpusm.h
./table_tdata.lo: ../../include/net-snmp/library/snmptsm.h
./table_tdata.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./table_tdata.lo: ../../include/net-snmp/agent/mib_module_config.h
./table_tdata.lo: ../../include/net-snmp/agent/agent_module_config.h
@ -2846,7 +2875,9 @@
./watcher.lo: ../../include/net-snmp/library/snmpTCPDomain.h
./watcher.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
./watcher.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
./watcher.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
./watcher.lo: ../../include/net-snmp/library/snmpIPXDomain.h
./watcher.lo: ../../include/net-snmp/library/snmpAAL5PVCDomain.h
./watcher.lo: ../../include/net-snmp/library/ucd_compat.h
./watcher.lo: ../../include/net-snmp/library/mib.h
./watcher.lo: ../../include/net-snmp/mib_api.h
@ -2865,7 +2896,6 @@
./watcher.lo: ../../include/net-snmp/library/data_list.h
./watcher.lo: ../../include/net-snmp/library/check_varbind.h
./watcher.lo: ../../include/net-snmp/library/container.h
./watcher.lo: ../../include/net-snmp/library/factory.h
./watcher.lo: ../../include/net-snmp/library/container_binary_array.h
./watcher.lo: ../../include/net-snmp/library/container_list_ssll.h
./watcher.lo: ../../include/net-snmp/library/container_iterator.h
@ -2886,8 +2916,8 @@
./watcher.lo: ../../include/net-snmp/library/lcd_time.h
./watcher.lo: ../../include/net-snmp/library/snmp_secmod.h
./watcher.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
./watcher.lo: ../../include/net-snmp/library/snmptsm.h
./watcher.lo: ../../include/net-snmp/library/snmpusm.h
./watcher.lo: ../../include/net-snmp/library/snmptsm.h
./watcher.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
./watcher.lo: ../../include/net-snmp/agent/mib_module_config.h
./watcher.lo: ../../include/net-snmp/agent/agent_module_config.h

View File

@ -32,5 +32,5 @@ LOBJS = dummy.lo
all: standardall
libnetsnmphelpers.$(LIB_EXTENSION)$(LIB_VERSION): $(LOBJS)
$(LIB_LD_CMD) $@ $(LOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) $(LIB_LD_LIBS)
$(LIB_LD_CMD) $@ $(LOBJS) $(LDFLAGS)
$(RANLIB) $@

View File

@ -13,7 +13,7 @@
#include <net-snmp/agent/table_dataset.h>
#include <net-snmp/agent/stash_cache.h>
netsnmp_feature_child_of(mib_helpers, libnetsnmpagent)
netsnmp_feature_child_of(mib_helpers, libnetsnmpagent);
/** call the initialization sequence for all handlers with init_ routines. */

View File

@ -12,11 +12,11 @@
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
netsnmp_feature_provide(baby_steps)
netsnmp_feature_child_of(baby_steps, mib_helpers)
netsnmp_feature_provide(baby_steps);
netsnmp_feature_child_of(baby_steps, mib_helpers);
#ifdef NETSNMP_FEATURE_REQUIRE_BABY_STEPS
netsnmp_feature_require(check_requests_error)
netsnmp_feature_require(check_requests_error);
#endif
#ifndef NETSNMP_FEATURE_REMOVE_BABY_STEPS
@ -355,7 +355,7 @@ _baby_steps_helper(netsnmp_mib_handler *handler,
* handler as a run-time injectable handler for configuration file
* use.
*/
netsnmp_feature_child_of(netsnmp_baby_steps_handler_init,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_baby_steps_handler_init,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_BABY_STEPS_HANDLER_INIT
void
netsnmp_baby_steps_handler_init(void)

View File

@ -16,7 +16,7 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -27,10 +27,10 @@
#include <net-snmp/agent/cache_handler.h>
netsnmp_feature_child_of(cache_handler, mib_helpers)
netsnmp_feature_child_of(cache_handler, mib_helpers);
netsnmp_feature_child_of(cache_find_by_oid, cache_handler)
netsnmp_feature_child_of(cache_get_head, cache_handler)
netsnmp_feature_child_of(cache_find_by_oid, cache_handler);
netsnmp_feature_child_of(cache_get_head, cache_handler);
static netsnmp_cache *cache_head = NULL;
static int cache_outstanding_valid = 0;
@ -457,7 +457,7 @@ _cache_handler_register(netsnmp_handler_registration * reginfo,
/** functionally the same as calling netsnmp_register_handler() but also
* injects a cache handler at the same time for you. */
netsnmp_feature_child_of(netsnmp_cache_handler_register,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_cache_handler_register,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CACHE_HANDLER_REGISTER
int
netsnmp_cache_handler_register(netsnmp_handler_registration * reginfo,
@ -475,7 +475,7 @@ netsnmp_cache_handler_register(netsnmp_handler_registration * reginfo,
/** functionally the same as calling netsnmp_register_handler() but also
* injects a cache handler at the same time for you. */
netsnmp_feature_child_of(netsnmp_register_cache_handler,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_register_cache_handler,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_REGISTER_CACHE_HANDLER
int
netsnmp_register_cache_handler(netsnmp_handler_registration * reginfo,
@ -538,7 +538,7 @@ netsnmp_cache_reqinfo_extract(netsnmp_agent_request_info * reqinfo,
}
/** Extract the cache information for a given request (PDU) */
netsnmp_feature_child_of(netsnmp_extract_cache_info,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_extract_cache_info,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_EXTRACT_CACHE_INFO
netsnmp_cache *
netsnmp_extract_cache_info(netsnmp_agent_request_info * reqinfo)
@ -594,7 +594,7 @@ netsnmp_cache_is_valid(netsnmp_agent_request_info * reqinfo,
/** Is the cache valid for a given request?
* for backwards compatability. netsnmp_cache_is_valid() is preferred.
*/
netsnmp_feature_child_of(netsnmp_is_cache_valid,netsnmp_unused)
netsnmp_feature_child_of(netsnmp_is_cache_valid,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_IS_CACHE_VALID
int
netsnmp_is_cache_valid(netsnmp_agent_request_info * reqinfo)

View File

@ -26,7 +26,7 @@
* All debugging output is done via the standard debugging routines
* with a token name of "helper:debug", so use the -Dhelper:debug
* command line flag to see the output when running the snmpd
* demon. It's not recommended you compile this into a handler chain
* daemon. It's not recommended you compile this into a handler chain
* during compile time, but instead use the "injectHandler" token in
* the snmpd.conf file (or similar) to add it to the chain later:
*

View File

@ -22,7 +22,7 @@
#include <net-snmp/agent/instance.h>
#include <stdlib.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -32,8 +32,8 @@
#include <net-snmp/agent/serialize.h>
#include <net-snmp/agent/read_only.h>
netsnmp_feature_provide(instance)
netsnmp_feature_child_of(instance, mib_helpers)
netsnmp_feature_provide(instance);
netsnmp_feature_child_of(instance, mib_helpers);
typedef struct netsnmp_num_file_instance_s {
int refcnt;
@ -214,7 +214,7 @@ get_reg(const char *name,
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE */
/* Watched 'long' instances are writable on both 32-bit and 64-bit systems */
netsnmp_feature_child_of(read_only_ulong_instance,instance)
netsnmp_feature_child_of(read_only_ulong_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_ULONG_INSTANCE
int
netsnmp_register_read_only_ulong_instance(const char *name,
@ -232,7 +232,7 @@ netsnmp_register_read_only_ulong_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_ULONG_INSTANCE */
netsnmp_feature_child_of(ulong_instance,instance)
netsnmp_feature_child_of(ulong_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_ULONG_INSTANCE
int
netsnmp_register_ulong_instance(const char *name,
@ -249,7 +249,7 @@ netsnmp_register_ulong_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_ULONG_INSTANCE */
netsnmp_feature_child_of(read_only_counter32_instance,instance)
netsnmp_feature_child_of(read_only_counter32_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_INSTANCE
int
netsnmp_register_read_only_counter32_instance(const char *name,
@ -268,7 +268,7 @@ netsnmp_register_read_only_counter32_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_INSTANCE */
netsnmp_feature_child_of(read_only_long_instance,instance)
netsnmp_feature_child_of(read_only_long_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_LONG_INSTANCE
int
netsnmp_register_read_only_long_instance(const char *name,
@ -285,7 +285,7 @@ netsnmp_register_read_only_long_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_LONG_INSTANCE */
netsnmp_feature_child_of(long_instance,instance)
netsnmp_feature_child_of(long_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_LONG_INSTANCE
int
netsnmp_register_long_instance(const char *name,
@ -301,7 +301,7 @@ netsnmp_register_long_instance(const char *name,
#endif /* NETSNMP_FEATURE_REMOVE_LONG_INSTANCE */
/* Watched 'int' instances are only writable on 32-bit systems */
netsnmp_feature_child_of(read_only_uint_instance,instance)
netsnmp_feature_child_of(read_only_uint_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_UINT_INSTANCE
int
netsnmp_register_read_only_uint_instance(const char *name,
@ -319,7 +319,7 @@ netsnmp_register_read_only_uint_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_UINT_INSTANCE */
netsnmp_feature_child_of(uint_instance,instance)
netsnmp_feature_child_of(uint_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_UINT_INSTANCE
int
netsnmp_register_uint_instance(const char *name,
@ -335,7 +335,7 @@ netsnmp_register_uint_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_UINT_INSTANCE */
netsnmp_feature_child_of(read_only_int_instance,instance)
netsnmp_feature_child_of(read_only_int_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE
int
netsnmp_register_read_only_int_instance(const char *name,
@ -353,7 +353,7 @@ netsnmp_register_read_only_int_instance(const char *name,
/*
* Compatibility with earlier (inconsistently named) routine
*/
netsnmp_feature_child_of(register_read_only_int_instance,netsnmp_unused)
netsnmp_feature_child_of(register_read_only_int_instance,netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE
int
register_read_only_int_instance(const char *name,
@ -370,7 +370,7 @@ register_read_only_int_instance(const char *name,
* Context registrations
*/
netsnmp_feature_child_of(register_read_only_ulong_instance_context,instance)
netsnmp_feature_child_of(register_read_only_ulong_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_ULONG_INSTANCE_CONTEXT
int
netsnmp_register_read_only_ulong_instance_context(const char *name,
@ -392,7 +392,7 @@ netsnmp_register_read_only_ulong_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_ULONG_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_ulong_instance_context,instance)
netsnmp_feature_child_of(register_ulong_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_ULONG_INSTANCE_CONTEXT
int
netsnmp_register_ulong_instance_context(const char *name,
@ -412,7 +412,7 @@ netsnmp_register_ulong_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_ULONG_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_read_only_counter32_instance_context,instance)
netsnmp_feature_child_of(register_read_only_counter32_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_COUNTER32_INSTANCE_CONTEXT
int
netsnmp_register_read_only_counter32_instance_context(const char *name,
@ -434,7 +434,7 @@ netsnmp_register_read_only_counter32_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_COUNTER32_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_read_only_long_instance_context,instance)
netsnmp_feature_child_of(register_read_only_long_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_LONG_INSTANCE_CONTEXT
int
netsnmp_register_read_only_long_instance_context(const char *name,
@ -456,7 +456,7 @@ netsnmp_register_read_only_long_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_LONG_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_long_instance_context,instance)
netsnmp_feature_child_of(register_long_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_LONG_INSTANCE_CONTEXT
int
netsnmp_register_long_instance_context(const char *name,
@ -476,7 +476,7 @@ netsnmp_register_long_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_LONG_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_int_instance_context,instance)
netsnmp_feature_child_of(register_int_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE_CONTEXT
int
netsnmp_register_int_instance_context(const char *name,
@ -497,7 +497,7 @@ netsnmp_register_int_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_read_only_int_instance_context,instance)
netsnmp_feature_child_of(register_read_only_int_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE_CONTEXT
int
netsnmp_register_read_only_int_instance_context(const char *name,
@ -521,7 +521,7 @@ netsnmp_register_read_only_int_instance_context(const char *name,
/*
* Compatibility with earlier (inconsistently named) routine
*/
netsnmp_feature_child_of(read_only_int_instance_context,instance)
netsnmp_feature_child_of(read_only_int_instance_context,instance);
#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE_CONTEXT
int
register_read_only_int_instance_context(const char *name,
@ -537,7 +537,7 @@ register_read_only_int_instance_context(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE_CONTEXT */
netsnmp_feature_child_of(register_num_file_instance,instance)
netsnmp_feature_child_of(register_num_file_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE
int
netsnmp_register_num_file_instance(const char *name,
@ -581,7 +581,7 @@ netsnmp_register_num_file_instance(const char *name,
}
#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE */
netsnmp_feature_child_of(register_int_instance,instance)
netsnmp_feature_child_of(register_int_instance,instance);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE
/**
* This function registers an int helper handler to a specified OID.

View File

@ -16,8 +16,8 @@
#include <net-snmp/agent/mode_end_call.h>
netsnmp_feature_provide(mode_end_call)
netsnmp_feature_child_of(mode_end_call, mib_helpers)
netsnmp_feature_provide(mode_end_call);
netsnmp_feature_child_of(mode_end_call, mib_helpers);
#ifndef NETSNMP_FEATURE_REMOVE_MODE_END_CALL
/** @defgroup mode_end_call mode_end_call

View File

@ -15,7 +15,7 @@
#include <net-snmp/agent/null.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>

View File

@ -15,7 +15,7 @@
#include <net-snmp/agent/old_api.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -25,6 +25,17 @@
#include <stddef.h>
/*
* mib clients are passed a pointer to a oid buffer. Some mib clients
* * (namely, those first noticed in mibII/vacm.c) modify this oid buffer
* * before they determine if they really need to send results back out
* * using it. If the master agent determined that the client was not the
* * right one to talk with, it will use the same oid buffer to pass to the
* * rest of the clients, which may not longer be valid. This should be
* * fixed in all clients rather than the master. However, its not a
* * particularily easy bug to track down so this saves debugging time at
* * the expense of a few memcpy's.
*/
#define MIB_CLIENTS_ARE_EVIL 1
#ifdef HAVE_DMALLOC_H
@ -270,7 +281,7 @@ netsnmp_old_api_helper(netsnmp_mib_handler *handler,
netsnmp_request_info *requests)
{
#if MIB_CLIENTS_ARE_EVIL
#ifdef MIB_CLIENTS_ARE_EVIL
oid save[MAX_OID_LEN];
size_t savelen = 0;
#endif
@ -278,7 +289,7 @@ netsnmp_old_api_helper(netsnmp_mib_handler *handler,
int exact = 1;
int status;
struct variable *vp;
struct variable *const vp = handler->myvoid;
netsnmp_old_api_cache *cacheptr;
netsnmp_agent_session *oldasp = NULL;
u_char *access = NULL;
@ -287,8 +298,6 @@ netsnmp_old_api_helper(netsnmp_mib_handler *handler,
size_t tmp_len;
oid tmp_name[MAX_OID_LEN];
vp = (struct variable *) handler->myvoid;
/*
* create old variable structure with right information
*/
@ -308,7 +317,7 @@ netsnmp_old_api_helper(netsnmp_mib_handler *handler,
for (; requests; requests = requests->next) {
#if MIB_CLIENTS_ARE_EVIL
#ifdef MIB_CLIENTS_ARE_EVIL
savelen = requests->requestvb->name_length;
memcpy(save, requests->requestvb->name, savelen * sizeof(oid));
#endif
@ -322,7 +331,7 @@ netsnmp_old_api_helper(netsnmp_mib_handler *handler,
/*
* Actually call the old mib-module function
*/
if (vp && vp->findVar) {
if (vp->findVar) {
tmp_len = requests->requestvb->name_length*sizeof(oid);
memcpy(tmp_name, requests->requestvb->name, tmp_len);
/** clear the rest of tmp_name to keep valgrind happy */
@ -361,7 +370,7 @@ netsnmp_old_api_helper(netsnmp_mib_handler *handler,
/*
* no result returned
*/
#if MIB_CLIENTS_ARE_EVIL
#ifdef MIB_CLIENTS_ARE_EVIL
if (access == NULL) {
if (netsnmp_oid_equals(requests->requestvb->name,
requests->requestvb->name_length,

View File

@ -17,15 +17,17 @@
#include <net-snmp/agent/row_merge.h>
#if HAVE_STRING_H
#include <stdint.h>
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
netsnmp_feature_provide(row_merge)
netsnmp_feature_child_of(row_merge, row_merge_all)
netsnmp_feature_child_of(row_merge_all, mib_helpers)
netsnmp_feature_provide(row_merge);
netsnmp_feature_child_of(row_merge, row_merge_all);
netsnmp_feature_child_of(row_merge_all, mib_helpers);
#ifndef NETSNMP_FEATURE_REMOVE_ROW_MERGE
@ -56,7 +58,7 @@ netsnmp_get_row_merge_handler(int prefix_len)
/** functionally the same as calling netsnmp_register_handler() but also
* injects a row_merge handler at the same time for you. */
netsnmp_feature_child_of(register_row_merge, row_merge_all)
netsnmp_feature_child_of(register_row_merge, row_merge_all);
#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_ROW_MERGE
int
netsnmp_register_row_merge(netsnmp_handler_registration *reginfo)

View File

@ -21,7 +21,7 @@
#include <net-snmp/agent/scalar.h>
#include <stdlib.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>

View File

@ -17,7 +17,7 @@
#include <net-snmp/agent/scalar_group.h>
#include <stdlib.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>

View File

@ -13,15 +13,15 @@
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include <net-snmp/agent/snmp_get_statistic.h>
#include <stdint.h>
netsnmp_feature_provide(helper_statistics)
netsnmp_feature_child_of(helper_statistics, mib_helpers)
netsnmp_feature_provide(helper_statistics);
netsnmp_feature_child_of(helper_statistics, mib_helpers);
#ifdef NETSNMP_FEATURE_REQUIRE_HELPER_STATISTICS
/* if we're not needed, then neither is this */
netsnmp_feature_require(statistics)
netsnmp_feature_require(statistics);
#endif
#ifndef NETSNMP_FEATURE_REMOVE_HELPER_STATISTICS

View File

@ -4,12 +4,12 @@
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
netsnmp_feature_provide(stash_cache)
netsnmp_feature_child_of(stash_cache, mib_helpers)
netsnmp_feature_provide(stash_cache);
netsnmp_feature_child_of(stash_cache, mib_helpers);
#ifdef NETSNMP_FEATURE_REQUIRE_STASH_CACHE
netsnmp_feature_require(oid_stash)
netsnmp_feature_require(oid_stash_iterate)
netsnmp_feature_require(oid_stash_get_data)
netsnmp_feature_require(oid_stash);
netsnmp_feature_require(oid_stash_iterate);
netsnmp_feature_require(oid_stash_get_data);
#endif
#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE

View File

@ -4,12 +4,12 @@
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
netsnmp_feature_provide(stash_to_next)
netsnmp_feature_child_of(stash_to_next, mib_helpers)
netsnmp_feature_provide(stash_to_next);
netsnmp_feature_child_of(stash_to_next, mib_helpers);
#ifdef NETSNMP_FEATURE_REQUIRE_STASH_TO_NEXT
netsnmp_feature_require(oid_stash)
netsnmp_feature_require(oid_stash_add_data)
netsnmp_feature_require(oid_stash);
netsnmp_feature_require(oid_stash_add_data);
#endif
#ifndef NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT

View File

@ -33,10 +33,10 @@
#include <net-snmp/agent/table.h>
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(oid_stash)
netsnmp_feature_require(oid_stash);
#endif /* !NETSNMP_NO_WRITE_SUPPORT */
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -44,12 +44,12 @@ netsnmp_feature_require(oid_stash)
#include <net-snmp/library/snmp_assert.h>
netsnmp_feature_child_of(table_all, mib_helpers)
netsnmp_feature_child_of(table_all, mib_helpers);
netsnmp_feature_child_of(table_build_result, table_all)
netsnmp_feature_child_of(table_get_or_create_row_stash, table_all)
netsnmp_feature_child_of(registration_owns_table_info, table_all)
netsnmp_feature_child_of(table_sparse, table_all)
netsnmp_feature_child_of(table_build_result, table_all);
netsnmp_feature_child_of(table_get_or_create_row_stash, table_all);
netsnmp_feature_child_of(registration_owns_table_info, table_all);
netsnmp_feature_child_of(table_sparse, table_all);
static void table_helper_cleanup(netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *request,
@ -998,7 +998,8 @@ netsnmp_update_indexes_from_variable_list(netsnmp_table_request_info *tri)
if (!tri)
return SNMPERR_GENERR;
return build_oid_noalloc(tri->index_oid, sizeof(tri->index_oid),
return build_oid_noalloc(tri->index_oid,
sizeof(tri->index_oid) / sizeof(tri->index_oid[0]),
&tri->index_oid_len, NULL, 0, tri->indexes);
}

View File

@ -20,7 +20,7 @@
#include <net-snmp/agent/table_array.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -30,12 +30,12 @@
#include <net-snmp/library/container.h>
#include <net-snmp/library/snmp_assert.h>
netsnmp_feature_child_of(table_array_all, mib_helpers)
netsnmp_feature_child_of(table_array_all, mib_helpers);
netsnmp_feature_child_of(table_array_register,table_array_all)
netsnmp_feature_child_of(table_array_find_table_array_handler,table_array_all)
netsnmp_feature_child_of(table_array_extract_array_context,table_array_all)
netsnmp_feature_child_of(table_array_check_row_status,table_array_all)
netsnmp_feature_child_of(table_array_register,table_array_all);
netsnmp_feature_child_of(table_array_find_table_array_handler,table_array_all);
netsnmp_feature_child_of(table_array_extract_array_context,table_array_all);
netsnmp_feature_child_of(table_array_check_row_status,table_array_all);
#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER

View File

@ -20,7 +20,7 @@
#include <net-snmp/agent/table_container.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -30,14 +30,14 @@
#include <net-snmp/library/container.h>
#include <net-snmp/library/snmp_assert.h>
netsnmp_feature_provide(table_container)
netsnmp_feature_child_of(table_container, table_container_all)
netsnmp_feature_child_of(table_container_replace_row, table_container_all)
netsnmp_feature_child_of(table_container_extract, table_container_all)
netsnmp_feature_child_of(table_container_management, table_container_all)
netsnmp_feature_child_of(table_container_row_remove, table_container_all)
netsnmp_feature_child_of(table_container_row_insert, table_container_all)
netsnmp_feature_child_of(table_container_all, mib_helpers)
netsnmp_feature_provide(table_container);
netsnmp_feature_child_of(table_container, table_container_all);
netsnmp_feature_child_of(table_container_replace_row, table_container_all);
netsnmp_feature_child_of(table_container_extract, table_container_all);
netsnmp_feature_child_of(table_container_management, table_container_all);
netsnmp_feature_child_of(table_container_row_remove, table_container_all);
netsnmp_feature_child_of(table_container_row_insert, table_container_all);
netsnmp_feature_child_of(table_container_all, mib_helpers);
#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER

View File

@ -17,7 +17,7 @@
#include <net-snmp/agent/table_data.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -26,24 +26,24 @@
#include <net-snmp/agent/table.h>
#include <net-snmp/agent/read_only.h>
netsnmp_feature_child_of(table_data_all, mib_helpers)
netsnmp_feature_child_of(table_data_all, mib_helpers);
netsnmp_feature_child_of(table_data, table_data_all)
netsnmp_feature_child_of(register_read_only_table_data, table_data_all)
netsnmp_feature_child_of(extract_table_row_data, table_data_all)
netsnmp_feature_child_of(insert_table_row, table_data_all)
netsnmp_feature_child_of(table_data_delete_table, table_data_all)
netsnmp_feature_child_of(table_data, table_data_all);
netsnmp_feature_child_of(register_read_only_table_data, table_data_all);
netsnmp_feature_child_of(extract_table_row_data, table_data_all);
netsnmp_feature_child_of(insert_table_row, table_data_all);
netsnmp_feature_child_of(table_data_delete_table, table_data_all);
netsnmp_feature_child_of(table_data_extras, table_data_all)
netsnmp_feature_child_of(table_data_extras, table_data_all);
netsnmp_feature_child_of(table_data_create_table, table_data_extras)
netsnmp_feature_child_of(table_data_create_row, table_data_extras)
netsnmp_feature_child_of(table_data_copy_row, table_data_extras)
netsnmp_feature_child_of(table_data_remove_delete_row, table_data_extras)
netsnmp_feature_child_of(table_data_unregister, table_data_extras)
netsnmp_feature_child_of(table_data_row_count, table_data_extras)
netsnmp_feature_child_of(table_data_row_operations, table_data_extras)
netsnmp_feature_child_of(table_data_row_first, table_data_extras)
netsnmp_feature_child_of(table_data_create_table, table_data_extras);
netsnmp_feature_child_of(table_data_create_row, table_data_extras);
netsnmp_feature_child_of(table_data_copy_row, table_data_extras);
netsnmp_feature_child_of(table_data_remove_delete_row, table_data_extras);
netsnmp_feature_child_of(table_data_unregister, table_data_extras);
netsnmp_feature_child_of(table_data_row_count, table_data_extras);
netsnmp_feature_child_of(table_data_row_operations, table_data_extras);
netsnmp_feature_child_of(table_data_row_first, table_data_extras);
#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA

View File

@ -18,38 +18,38 @@
#include <net-snmp/agent/table_dataset.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
netsnmp_feature_child_of(table_dataset_all, mib_helpers)
netsnmp_feature_child_of(table_dataset, table_dataset_all)
netsnmp_feature_child_of(table_dataset_remove_row, table_dataset_all)
netsnmp_feature_child_of(table_data_set_column, table_dataset_all)
netsnmp_feature_child_of(table_dataset_get_newrow, table_dataset_all)
netsnmp_feature_child_of(table_set_add_indexes, table_dataset_all)
netsnmp_feature_child_of(delete_table_data_set, table_dataset_all)
netsnmp_feature_child_of(table_set_multi_add_default_row, table_dataset_all)
netsnmp_feature_child_of(table_dataset_unregister_auto_data_table, table_dataset_all)
netsnmp_feature_child_of(table_dataset_all, mib_helpers);
netsnmp_feature_child_of(table_dataset, table_dataset_all);
netsnmp_feature_child_of(table_dataset_remove_row, table_dataset_all);
netsnmp_feature_child_of(table_data_set_column, table_dataset_all);
netsnmp_feature_child_of(table_dataset_get_newrow, table_dataset_all);
netsnmp_feature_child_of(table_set_add_indexes, table_dataset_all);
netsnmp_feature_child_of(delete_table_data_set, table_dataset_all);
netsnmp_feature_child_of(table_set_multi_add_default_row, table_dataset_all);
netsnmp_feature_child_of(table_dataset_unregister_auto_data_table, table_dataset_all);
#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_DATASET
netsnmp_feature_require(table_get_or_create_row_stash)
netsnmp_feature_require(table_data_delete_table)
netsnmp_feature_require(table_data)
netsnmp_feature_require(oid_stash_get_data)
netsnmp_feature_require(oid_stash_add_data)
netsnmp_feature_require(table_get_or_create_row_stash);
netsnmp_feature_require(table_data_delete_table);
netsnmp_feature_require(table_data);
netsnmp_feature_require(oid_stash_get_data);
netsnmp_feature_require(oid_stash_add_data);
#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_DATASET */
#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(oid_stash)
netsnmp_feature_require(oid_stash);
#endif /* !NETSNMP_NO_WRITE_SUPPORT */
#ifndef NETSNMP_DISABLE_MIB_LOADING
netsnmp_feature_require(mib_to_asn_type)
netsnmp_feature_require(mib_to_asn_type);
#endif /* NETSNMP_DISABLE_MIB_LOADING */
static netsnmp_data_list *auto_tables;

View File

@ -95,7 +95,7 @@
#include <net-snmp/agent/table_iterator.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -105,16 +105,16 @@
#include <net-snmp/agent/serialize.h>
#include <net-snmp/agent/stash_cache.h>
netsnmp_feature_child_of(table_iterator_all, mib_helpers)
netsnmp_feature_child_of(table_iterator_all, mib_helpers);
netsnmp_feature_child_of(table_iterator_insert_context, table_iterator_all)
netsnmp_feature_child_of(table_iterator_create_table, table_iterator_all)
netsnmp_feature_child_of(table_iterator_row_first, table_iterator_all)
netsnmp_feature_child_of(table_iterator_row_count, table_iterator_all)
netsnmp_feature_child_of(table_iterator_insert_context, table_iterator_all);
netsnmp_feature_child_of(table_iterator_create_table, table_iterator_all);
netsnmp_feature_child_of(table_iterator_row_first, table_iterator_all);
netsnmp_feature_child_of(table_iterator_row_count, table_iterator_all);
#ifdef NETSNMP_FEATURE_REQUIRE_STASH_CACHE
netsnmp_feature_require(data_list_get_list_node)
netsnmp_feature_require(oid_stash_add_data)
netsnmp_feature_require(data_list_get_list_node);
netsnmp_feature_require(oid_stash_add_data);
#endif /* NETSNMP_FEATURE_REQUIRE_STASH_CACHE */
/* ==================================
@ -850,7 +850,8 @@ netsnmp_table_iterator_helper_handler(netsnmp_mib_handler *handler,
netsnmp_request_get_list_data(request,
TI_REQUEST_CACHE);
if (!ti_info->results) {
int nc;
int nc;
table_info = netsnmp_extract_table_info(request);
nc = netsnmp_table_next_column(table_info);
if (0 == nc) {
@ -858,7 +859,6 @@ netsnmp_table_iterator_helper_handler(netsnmp_mib_handler *handler,
snmp_set_var_objid(request->requestvb,
coloid, reginfo->rootoid_len+2);
request->processed = TABLE_ITERATOR_NOTAGAIN;
break;
} else {
table_info->colnum = nc;
hintok = 0;

View File

@ -17,7 +17,7 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -31,9 +31,9 @@
#include <net-snmp/library/container.h>
#include <net-snmp/library/snmp_assert.h>
netsnmp_feature_child_of(table_row_all, mib_helpers)
netsnmp_feature_child_of(table_row_all, mib_helpers);
netsnmp_feature_child_of(table_row_extract, table_row_all)
netsnmp_feature_child_of(table_row_extract, table_row_all);
/*

View File

@ -17,7 +17,7 @@
#include <net-snmp/agent/table_tdata.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -27,21 +27,17 @@
#include <net-snmp/agent/table_container.h>
#include <net-snmp/agent/read_only.h>
#if HAVE_DMALLOC_H
#include <dmalloc.h>
#endif
netsnmp_feature_child_of(table_tdata_all, mib_helpers)
netsnmp_feature_child_of(table_tdata, table_tdata_all)
netsnmp_feature_child_of(table_tdata_delete_table, table_tdata_all)
netsnmp_feature_child_of(table_tdata_extract_table, table_tdata_all)
netsnmp_feature_child_of(table_tdata_remove_row, table_tdata_all)
netsnmp_feature_child_of(table_tdata_insert_row, table_tdata_all)
netsnmp_feature_child_of(table_tdata_all, mib_helpers);
netsnmp_feature_child_of(table_tdata, table_tdata_all);
netsnmp_feature_child_of(table_tdata_delete_table, table_tdata_all);
netsnmp_feature_child_of(table_tdata_extract_table, table_tdata_all);
netsnmp_feature_child_of(table_tdata_remove_row, table_tdata_all);
netsnmp_feature_child_of(table_tdata_insert_row, table_tdata_all);
#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_TDATA
netsnmp_feature_require(table_container_row_insert)
netsnmp_feature_require(table_container_row_insert);
#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_TDATA_REMOVE_ROW
netsnmp_feature_require(table_container_row_remove)
netsnmp_feature_require(table_container_row_remove);
#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_TDATA_REMOVE_ROW */
#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_TDATA */
@ -127,7 +123,7 @@ netsnmp_tdata_create_row(void)
}
/** clones a 'tdata' row. DOES NOT CLONE THE TABLE-SPECIFIC ENTRY DATA. */
netsnmp_feature_child_of(tdata_clone_row, table_tdata_all)
netsnmp_feature_child_of(tdata_clone_row, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_CLONE_ROW
netsnmp_tdata_row *
netsnmp_tdata_clone_row(netsnmp_tdata_row *row)
@ -165,7 +161,7 @@ netsnmp_tdata_clone_row(netsnmp_tdata_row *row)
/** copy the contents of a 'tdata' row.
DOES NOT COPY THE TABLE-SPECIFIC ENTRY DATA. */
netsnmp_feature_child_of(tdata_copy_row, table_tdata_all)
netsnmp_feature_child_of(tdata_copy_row, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_COPY_ROW
int
netsnmp_tdata_copy_row(netsnmp_tdata_row *dst_row, netsnmp_tdata_row *src_row)
@ -267,7 +263,7 @@ netsnmp_tdata_add_row(netsnmp_tdata *table,
}
/** swaps out origrow with newrow. This does *not* delete/free anything! */
netsnmp_feature_child_of(tdata_replace_row, table_tdata_all)
netsnmp_feature_child_of(tdata_replace_row, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_REPLACE_ROW
void
netsnmp_tdata_replace_row(netsnmp_tdata *table,
@ -428,7 +424,7 @@ netsnmp_tdata_register(netsnmp_handler_registration *reginfo,
table->container, TABLE_CONTAINER_KEY_NETSNMP_INDEX);
}
netsnmp_feature_child_of(tdata_unregister, table_tdata_all)
netsnmp_feature_child_of(tdata_unregister, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_UNREGISTER
int
netsnmp_tdata_unregister(netsnmp_handler_registration *reginfo)
@ -449,7 +445,7 @@ netsnmp_tdata_extract_table(netsnmp_request_info *request)
#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_EXTRACT_TABLE */
/** extracts the tdata container from the request structure */
netsnmp_feature_child_of(tdata_extract_container, table_tdata_all)
netsnmp_feature_child_of(tdata_extract_container, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_EXTRACT_CONTAINER
netsnmp_container *
netsnmp_tdata_extract_container(netsnmp_request_info *request)
@ -596,7 +592,7 @@ netsnmp_tdata_row_next_byoid(netsnmp_tdata *table,
return (netsnmp_tdata_row*)CONTAINER_NEXT( table->container, &index );
}
netsnmp_feature_child_of(tdata_row_count, table_tdata_all)
netsnmp_feature_child_of(tdata_row_count, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_ROW_COUNT
int
netsnmp_tdata_row_count(netsnmp_tdata *table)
@ -615,7 +611,7 @@ netsnmp_tdata_row_count(netsnmp_tdata *table)
/** compare a row with the given index values */
netsnmp_feature_child_of(tdata_compare_idx, table_tdata_all)
netsnmp_feature_child_of(tdata_compare_idx, table_tdata_all);
#ifndef NETSNMP_FEATURE_REMOVE_TDATA_COMPARE_IDX
int
netsnmp_tdata_compare_idx(netsnmp_tdata_row *row,

View File

@ -31,18 +31,18 @@ static void free_wrapper(void * p)
#define free_wrapper free
#endif
netsnmp_feature_provide(watcher_all)
netsnmp_feature_child_of(watcher_all, mib_helpers)
netsnmp_feature_child_of(watcher_create_info6, watcher_all)
netsnmp_feature_child_of(watcher_register_timestamp, watcher_all)
netsnmp_feature_child_of(watcher_ulong_scalar, watcher_all)
netsnmp_feature_child_of(watcher_read_only_ulong_scalar, watcher_all)
netsnmp_feature_child_of(watcher_read_only_int_scalar, watcher_all)
netsnmp_feature_child_of(watcher_long_scalar, watcher_all)
netsnmp_feature_child_of(watcher_read_only_long_scalar, watcher_all)
netsnmp_feature_child_of(watcher_int_scalar, watcher_all)
netsnmp_feature_child_of(read_only_counter32_scalar, watcher_all)
netsnmp_feature_child_of(watcher_spinlock, watcher_all)
netsnmp_feature_provide(watcher_all);
netsnmp_feature_child_of(watcher_all, mib_helpers);
netsnmp_feature_child_of(watcher_create_info6, watcher_all);
netsnmp_feature_child_of(watcher_register_timestamp, watcher_all);
netsnmp_feature_child_of(watcher_ulong_scalar, watcher_all);
netsnmp_feature_child_of(watcher_read_only_ulong_scalar, watcher_all);
netsnmp_feature_child_of(watcher_read_only_int_scalar, watcher_all);
netsnmp_feature_child_of(watcher_long_scalar, watcher_all);
netsnmp_feature_child_of(watcher_read_only_long_scalar, watcher_all);
netsnmp_feature_child_of(watcher_int_scalar, watcher_all);
netsnmp_feature_child_of(read_only_counter32_scalar, watcher_all);
netsnmp_feature_child_of(watcher_spinlock, watcher_all);
/** @defgroup watcher watcher
* Watch a specified variable and process it as an instance or scalar object

View File

@ -18,24 +18,24 @@
#include <net-snmp/net-snmp-config.h>
#include <sys/types.h>
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <stdio.h>
#include <errno.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#if HAVE_FCNTL_H
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_KVM_H
#ifdef HAVE_KVM_H
#include <kvm.h>
#endif
@ -44,13 +44,8 @@
#include "kernel.h"
#include <net-snmp/agent/ds_agent.h>
#ifndef NULL
#define NULL 0
#endif
#if HAVE_KVM_H
kvm_t *kd = NULL;
#if defined(HAVE_KVM_H) && !defined(NETSNMP_NO_KMEM_USAGE)
kvm_t *kd;
/**
* Initialize the support for accessing kernel virtual memory.
@ -62,7 +57,7 @@ init_kmem(const char *file)
{
int res = TRUE;
#if HAVE_KVM_OPENFILES
#ifdef HAVE_KVM_OPENFILES
char err[4096];
kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, err);
@ -110,7 +105,7 @@ klookup(unsigned long off, void *target, size_t siz)
return 0;
result = kvm_read(kd, off, target, siz);
if (result != siz) {
#if HAVE_KVM_OPENFILES
#ifdef HAVE_KVM_OPENFILES
snmp_log(LOG_ERR, "kvm_read(*, %lx, %p, %x) = %d: %s\n", off,
target, (unsigned) siz, result, kvm_geterr(kd));
#else
@ -135,9 +130,8 @@ free_kmem(void)
}
}
#else /* HAVE_KVM_H */
#ifdef HAVE_KMEM
#elif defined(HAVE_NLIST_H) && !defined(__linux__) && \
!defined(NETSNMP_NO_KMEM_USAGE)
static off_t klseek(off_t);
static int klread(char *, int);
@ -259,6 +253,15 @@ free_kmem(void)
}
}
#endif /* HAVE_KMEM */
#else
int
init_kmem(const char *file)
{
return 1; /* success */
}
#endif /* HAVE_KVM_H */
void
free_kmem(void)
{
}
#endif

View File

@ -17,14 +17,14 @@
extern int init_kmem(const char *);
extern void free_kmem(void);
#if HAVE_KVM_H
#ifdef HAVE_KVM_H
extern int klookup(unsigned long, void *, size_t);
#define NETSNMP_KLOOKUP(x,y,z) klookup((unsigned long) x,y,z)
#else
#define NETSNMP_KLOOKUP(x,y,z) (0)
#endif
#if HAVE_KVM_H
#ifdef HAVE_KVM_H
#include <kvm.h>
extern kvm_t *kd;
#endif

View File

@ -4,29 +4,29 @@
#include <net-snmp/agent/mib_module_config.h>
#include <net-snmp/net-snmp-config.h>
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <sys/types.h>
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@ -65,9 +65,6 @@ init_mib_modules(void)
{
static int once = 0;
#ifdef USING_IF_MIB_DATA_ACCESS_INTERFACE_MODULE
netsnmp_access_interface_init();
#endif
# include "mib_module_inits.h"
need_shutdown = 1;

File diff suppressed because it is too large Load Diff

View File

@ -44,13 +44,13 @@
*
*/
config_require(Rmon/rows)
config_require(Rmon/agutil)
config_require(Rmon/statistics)
config_require(Rmon/rows);
config_require(Rmon/agutil);
config_require(Rmon/statistics);
/* older implementation: */
/* config_require(Rmon/alarm) */
config_require(Rmon/alarmTable)
config_require(Rmon/history)
config_require(Rmon/event)
config_add_mib(RMON-MIB)
config_require(Rmon/alarmTable);
config_require(Rmon/history);
config_require(Rmon/event);
config_add_mib(RMON-MIB);

View File

@ -210,7 +210,7 @@ AGUTIL_sys_up_time(void)
void
SYSTEM_get_eth_statistics(VAR_OID_T * data_source, ETH_STATS_T * where)
{
#if OPTICALL_ACESS
#ifdef OPTICALL_ACESS
where->ifIndex = data_source->objid[data_source->length - 1];
agent_get_Rmon_ethernet_statistics(where->ifIndex, 1, /* exact */
where);

View File

@ -63,7 +63,7 @@ int AGUTIL_get_oid_value(u_char * var_val, u_char var_val_type,
u_long AGUTIL_sys_up_time(void);
#if OPTICALL_ACESS
#ifdef OPTICALL_ACESS
#define ETH_STATS_T UID_PORT_STATISTICS_T
#else
typedef struct {

View File

@ -20,17 +20,17 @@
#include <net-snmp/net-snmp-config.h>
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
@ -129,6 +129,8 @@
0;
#endif
static unsigned char zero_octet_string[1];
static int
fetch_var_val(oid * name, size_t namelen, u_long * new_value)
{
@ -645,7 +647,7 @@ var_alarmEntry(struct variable * vp, oid * name, size_t * length,
return (unsigned char *) hdr->owner;
} else {
*var_len = 0;
return (unsigned char *) "";
return zero_octet_string;
}
case IDalarmStatus:

View File

@ -17,16 +17,20 @@
#include "alarmTable.h"
#include "event.h"
netsnmp_feature_require(iquery)
netsnmp_feature_require(query_set_default_session)
netsnmp_feature_require(table_tdata)
netsnmp_feature_require(check_vb_type_and_max_size)
netsnmp_feature_require(table_tdata_extract_table)
netsnmp_feature_require(iquery);
netsnmp_feature_require(query_set_default_session);
netsnmp_feature_require(table_tdata);
netsnmp_feature_require(check_vb_type_and_max_size);
netsnmp_feature_require(table_tdata_extract_table);
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(table_tdata_insert_row)
netsnmp_feature_require(iquery_pdu_session)
netsnmp_feature_require(table_tdata_insert_row);
netsnmp_feature_require(iquery_pdu_session);
#endif /* NETSNMP_NO_WRITE_SUPPORT */
static netsnmp_tdata *alarm_data;
static netsnmp_table_registration_info *alarm_info;
static netsnmp_handler_registration *alarm_reg;
/** Initializes the alarmTable module */
void
init_alarmTable(void)
@ -43,33 +47,38 @@ initialize_table_alarmTable(void)
{
static oid alarmTable_oid[] = { 1, 3, 6, 1, 2, 1, 16, 3, 1 };
size_t alarmTable_oid_len = OID_LENGTH(alarmTable_oid);
netsnmp_handler_registration *reg;
netsnmp_tdata *table_data;
netsnmp_table_registration_info *table_info;
DEBUGMSGTL(( "rmon:alarmTable", "initialize_table_alarmTable called.\n"));
reg =
alarm_reg =
netsnmp_create_handler_registration("alarmTable",
alarmTable_handler,
alarmTable_oid,
alarmTable_oid_len,
HANDLER_CAN_RWRITE);
table_data = netsnmp_tdata_create_table("alarmTable", 0);
table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, /* index: alarmIndex */
alarm_data = netsnmp_tdata_create_table("alarmTable", 0);
alarm_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
netsnmp_table_helper_add_indexes(alarm_info, ASN_INTEGER, /* index: alarmIndex */
0);
table_info->min_column = COLUMN_ALARMINDEX;
table_info->max_column = COLUMN_ALARMSTATUS;
alarm_info->min_column = COLUMN_ALARMINDEX;
alarm_info->max_column = COLUMN_ALARMSTATUS;
netsnmp_tdata_register(reg, table_data, table_info);
netsnmp_tdata_register(alarm_reg, alarm_data, alarm_info);
/*
* Initialise the contents of the table here
*/
}
void shutdown_alarmTable(void)
{
netsnmp_tdata_unregister(alarm_reg);
netsnmp_table_registration_info_free(alarm_info);
}
#define ALARM_STR1_LEN 32
typedef enum {
RMON1_ENTRY_VALID = 1,
@ -805,7 +814,7 @@ alarmTable_handler(netsnmp_mib_handler *handler,
netsnmp_query_set_default_session(sess);
DEBUGMSGTL(("rmon:alarmTable", "user name %s\n", secName));
} else {
snmp_log(LOG_ERR, "user name %s not found\n", secName);
snmp_log(LOG_ERR, "user name not found\n");
config_perror("Unknown user name\n");
}

View File

@ -11,15 +11,16 @@
#ifndef ALARMTABLE_H
#define ALARMTABLE_H
config_require(utilities/iquery)
config_require(Rmon/agutil)
config_require(Rmon/rows)
config_require(Rmon/event)
config_require(utilities/iquery);
config_require(Rmon/agutil);
config_require(Rmon/rows);
config_require(Rmon/event);
/*
* function declarations
*/
void init_alarmTable(void);
void shutdown_alarmTable(void);
void initialize_table_alarmTable(void);
Netsnmp_Node_Handler alarmTable_handler;

View File

@ -21,20 +21,20 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <ctype.h>
@ -50,7 +50,7 @@
#include "agutil_api.h"
#include "row_api.h"
netsnmp_feature_require(snprint_objid)
netsnmp_feature_require(snprint_objid);
/*
* File scope definitions section
@ -524,7 +524,7 @@ create_explanaition(CRTL_ENTRY_T * evptr, u_char is_rising,
tmp = strchr(pch, '.');
if (!tmp)
break;
if (isdigit(tmp[1]) || '"' == tmp[1])
if (isdigit((unsigned char)tmp[1]) || '"' == tmp[1])
break;
pch = tmp + 1;
}

View File

@ -26,10 +26,10 @@
*/
void init_event(void);
config_require(util_funcs)
config_require(util_funcs);
config_require(Rmon/agutil)
config_require(Rmon/rows)
config_require(Rmon/agutil);
config_require(Rmon/rows);
int
event_api_send_alarm(u_char is_rising, u_long alarm_index,

View File

@ -20,20 +20,20 @@
#include <net-snmp/net-snmp-config.h>
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif

View File

@ -20,20 +20,20 @@
#include <net-snmp/net-snmp-config.h>
#if HAVE_STDLIB
#ifdef HAVE_STDLIB
#include <stdlib.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif

View File

@ -22,10 +22,10 @@
* users, then it may be safe to turn on. */
#define ENABLE_EXTEND_WRITE_ACCESS 0
netsnmp_feature_require(extract_table_row_data)
netsnmp_feature_require(table_data_delete_table)
netsnmp_feature_require(extract_table_row_data);
netsnmp_feature_require(table_data_delete_table);
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(insert_table_row)
netsnmp_feature_require(insert_table_row);
#endif /* NETSNMP_NO_WRITE_SUPPORT */
oid ns_extend_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2 };
@ -260,6 +260,10 @@ _unregister_extend(extend_registration_block *eptr)
}
netsnmp_table_data_delete_table(eptr->dinfo);
netsnmp_unregister_handler( eptr->reg[0] );
netsnmp_unregister_handler( eptr->reg[1] );
netsnmp_unregister_handler( eptr->reg[2] );
netsnmp_unregister_handler( eptr->reg[3] );
free(eptr->root_oid);
free(eptr);
}
@ -272,11 +276,14 @@ extend_clear_callback(int majorID, int minorID,
for ( eptr=ereg_head; eptr; eptr=enext ) {
enext=eptr->next;
netsnmp_table_data_delete_table(eptr->dinfo);
netsnmp_unregister_handler( eptr->reg[0] );
netsnmp_unregister_handler( eptr->reg[1] );
netsnmp_unregister_handler( eptr->reg[2] );
netsnmp_unregister_handler( eptr->reg[3] );
SNMP_FREE(eptr);
if (eptr->root_oid)
free(eptr->root_oid);
free(eptr);
}
ereg_head = NULL;
return 0;
@ -354,8 +361,8 @@ extend_load_cache(netsnmp_cache *cache, void *magic)
ret = run_exec_command( cmd_buf, extension->input, out_buf, &out_len);
DEBUGMSG(( "nsExtendTable:cache", ": %s : %d\n", cmd_buf, ret));
if (ret >= 0) {
if (out_buf[ out_len-1 ] == '\n')
out_buf[ --out_len ] = '\0'; /* Stomp on trailing newline */
if (out_len > 0 && out_buf[out_len - 1] == '\n')
out_buf[--out_len] = '\0'; /* Strip trailing newline */
extension->output = strdup( out_buf );
extension->out_len = out_len;
/*
@ -573,8 +580,12 @@ extend_parse_config(const char *token, char *cptr)
if (!strcmp( token, "execFix" ) ||
!strcmp( token, "extendfix" ) ||
!strcmp( token, "execFix2" )) {
strcpy( exec_name2, exec_name );
strcat( exec_name, "Fix" );
strlcpy(exec_name2, exec_name, sizeof(exec_name2));
if (snprintf(exec_name, sizeof(exec_name), "%sFix", exec_name2) >=
sizeof(exec_name)) {
config_perror("ERROR: argument too long");
return;
}
flags |= NS_EXTEND_FLAGS_WRITEABLE;
/* XXX - Check for shell... */
}
@ -652,9 +663,9 @@ handle_nsExtendConfigTable(netsnmp_mib_handler *handler,
netsnmp_request_info *request;
netsnmp_table_request_info *table_info;
netsnmp_extend *extension;
extend_registration_block *eptr;
extend_registration_block *eptr NETSNMP_ATTRIBUTE_UNUSED;
int i;
int need_to_validate = 0;
int need_to_validate NETSNMP_ATTRIBUTE_UNUSED = 0;
for ( request=requests; request; request=request->next ) {
if (request->processed)
@ -1532,52 +1543,49 @@ var_extensible_old(struct variable * vp,
idx = name[*length-1] -1;
if (idx > max_compatability_entries)
return NULL;
exten = &compatability_entries[ idx ];
if (exten) {
switch (vp->magic) {
case MIBINDEX:
long_ret = name[*length - 1];
return ((u_char *) (&long_ret));
case ERRORNAME: /* name defined in config file */
*var_len = strlen(exten->exec_entry->token);
return ((u_char *) (exten->exec_entry->token));
case SHELLCOMMAND:
cmdline = _get_cmdline(exten->exec_entry);
exten = &compatability_entries[idx];
switch (vp->magic) {
case MIBINDEX:
long_ret = name[*length - 1];
return (u_char *) &long_ret;
case ERRORNAME: /* name defined in config file */
*var_len = strlen(exten->exec_entry->token);
return ((u_char *) (exten->exec_entry->token));
case SHELLCOMMAND:
cmdline = _get_cmdline(exten->exec_entry);
if (cmdline)
*var_len = strlen(cmdline);
return (u_char *) cmdline;
case ERRORFLAG: /* return code from the process */
netsnmp_cache_check_and_reload( exten->exec_entry->cache );
long_ret = exten->exec_entry->result;
return (u_char *) &long_ret;
case ERRORMSG: /* first line of text returned from the process */
netsnmp_cache_check_and_reload( exten->exec_entry->cache );
if (exten->exec_entry->numlines > 1) {
*var_len = (exten->exec_entry->lines[1])-
(exten->exec_entry->output) -1;
} else if (exten->exec_entry->output) {
*var_len = strlen(exten->exec_entry->output);
} else {
*var_len = 0;
}
return (u_char *) exten->exec_entry->output;
case ERRORFIX:
*write_method = fixExec2Error;
long_return = 0;
return (u_char *) &long_return;
case ERRORFIXCMD:
if (exten->efix_entry) {
cmdline = _get_cmdline(exten->efix_entry);
if (cmdline)
*var_len = strlen(cmdline);
return ((u_char *) cmdline);
case ERRORFLAG: /* return code from the process */
netsnmp_cache_check_and_reload( exten->exec_entry->cache );
long_ret = exten->exec_entry->result;
return ((u_char *) (&long_ret));
case ERRORMSG: /* first line of text returned from the process */
netsnmp_cache_check_and_reload( exten->exec_entry->cache );
if (exten->exec_entry->numlines > 1) {
*var_len = (exten->exec_entry->lines[1])-
(exten->exec_entry->output) -1;
} else if (exten->exec_entry->output) {
*var_len = strlen(exten->exec_entry->output);
} else {
*var_len = 0;
}
return ((u_char *) (exten->exec_entry->output));
case ERRORFIX:
*write_method = fixExec2Error;
long_return = 0;
return ((u_char *) &long_return);
case ERRORFIXCMD:
if (exten->efix_entry) {
cmdline = _get_cmdline(exten->efix_entry);
if (cmdline)
*var_len = strlen(cmdline);
return ((u_char *) cmdline);
} else {
*var_len = 0;
return ((u_char *) &long_return); /* Just needs to be non-null! */
}
return (u_char *) cmdline;
} else {
*var_len = 0;
return (u_char *) &long_return; /* Just needs to be non-null! */
}
return NULL;
}
return NULL;
}
@ -1590,13 +1598,10 @@ fixExec2Error(int action,
size_t var_val_len,
u_char * statP, oid * name, size_t name_len)
{
netsnmp_old_extend *exten = NULL;
unsigned int idx;
idx = name[name_len-1] -1;
exten = &compatability_entries[ idx ];
#if !defined(NETSNMP_NO_WRITE_SUPPORT) && ENABLE_EXTEND_WRITE_ACCESS
unsigned int idx = name[name_len - 1] - 1;
const netsnmp_old_extend *exten = &compatability_entries[idx];
switch (action) {
case MODE_SET_RESERVE1:
if (var_val_type != ASN_INTEGER) {

View File

@ -1,9 +1,9 @@
#ifndef NETSNMP_EXTEND_H
#define NETSNMP_EXTEND_H
config_require( util_funcs/header_simple_table )
config_require( utilities/execute )
config_add_mib(NET-SNMP-EXTEND-MIB)
config_require( util_funcs/header_simple_table );
config_require( utilities/execute );
config_add_mib(NET-SNMP-EXTEND-MIB);
typedef struct netsnmp_extend_s {
char *token;

View File

@ -13,7 +13,7 @@
#include <net-snmp/agent/cache_handler.h>
#include "agent/nsCache.h"
netsnmp_feature_require(cache_get_head)
netsnmp_feature_require(cache_get_head);
/*

View File

@ -3,6 +3,7 @@
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include <net-snmp/agent/scalar.h>
#include <stdint.h>
#ifdef HAVE_STRING_H
#include <string.h>
#else

View File

@ -13,9 +13,9 @@
#include <net-snmp/library/snmp_logging.h>
#include "agent/nsLogging.h"
netsnmp_feature_require(logging_external)
netsnmp_feature_require(logging_external);
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(table_iterator_insert_context)
netsnmp_feature_require(table_iterator_insert_context);
#endif /* NETSNMP_NO_WRITE_SUPPORT */
/*

View File

@ -9,7 +9,7 @@
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "nsModuleTable.h"
netsnmp_feature_require(table_dataset)
netsnmp_feature_require(table_dataset);
void
nsModuleTable_free(void *context, netsnmp_iterator_info *dont_care)

View File

@ -12,7 +12,7 @@
#include <net-snmp/agent/table_iterator.h>
#include "nsTransactionTable.h"
netsnmp_feature_require(table_dataset)
netsnmp_feature_require(table_dataset);
/** Initialize the nsTransactionTable table by defining it's contents
and how it's structured */

View File

@ -10,10 +10,10 @@
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "nsVacmAccessTable.h"
netsnmp_feature_require(check_vb_storagetype)
netsnmp_feature_require(check_vb_storagetype);
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(check_vb_type_and_max_size)
netsnmp_feature_require(table_iterator_insert_context)
netsnmp_feature_require(check_vb_type_and_max_size);
netsnmp_feature_require(table_iterator_insert_context);
#endif /* NETSNMP_NO_WRITE_SUPPORT */
/** Initializes the nsVacmAccessTable module */

View File

@ -5,7 +5,7 @@
#ifndef NSVACMACCESSTABLE_H
#define NSVACMACCESSTABLE_H
config_add_mib(NET-SNMP-VACM-MIB)
config_add_mib(NET-SNMP-VACM-MIB);
/*
* function declarations

View File

@ -1,9 +1,9 @@
config_require(agent/nsTransactionTable)
config_require(agent/nsModuleTable)
config_require(agent/nsTransactionTable);
config_require(agent/nsModuleTable);
#ifndef NETSNMP_NO_DEBUGGING
config_require(agent/nsDebug)
config_require(agent/nsDebug);
#endif
config_require(agent/nsCache)
config_require(agent/nsLogging)
config_require(agent/nsVacmAccessTable)
config_add_mib(NET-SNMP-AGENT-MIB)
config_require(agent/nsCache);
config_require(agent/nsLogging);
config_require(agent/nsVacmAccessTable);
config_add_mib(NET-SNMP-AGENT-MIB);

View File

@ -1,6 +1,6 @@
#ifndef _AGENTX_MIBGROUP_H
#define _AGENTX_MIBGROUP_H
config_require(agentx/master)
config_require(agentx/subagent)
config_require(agentx/master);
config_require(agentx/subagent);
#endif /* _AGENTX_MIBGROUP_H */

View File

@ -9,7 +9,7 @@
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
@ -21,8 +21,8 @@
#include "agentx/agentx_config.h"
#include "agentx/protocol.h"
netsnmp_feature_require(user_information)
netsnmp_feature_require(string_time_to_secs)
netsnmp_feature_require(user_information);
netsnmp_feature_require(string_time_to_secs);
/* ---------------------------------------------------------------------
*
@ -140,6 +140,22 @@ agentx_parse_agentx_retries(const char *token, char *cptr)
}
#endif /* USING_AGENTX_MASTER_MODULE */
#ifdef USING_AGENTX_SUBAGENT_MODULE
void
agentx_parse_agentx_ping_interval(const char *token, char *cptr)
{
int x = atoi(cptr);
DEBUGMSGTL(("agentx/config/ping", "%s\n", cptr));
if (x < 1) {
config_perror("Invalid ping interval value");
return;
}
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, x);
}
#endif /* USING_AGENTX_SUBAGENT_MODULE */
/* ---------------------------------------------------------------------
*
* Sub-agent
@ -160,7 +176,7 @@ agentx_register_config_handler(const char *token,
register_config_handler(":agentx", token, parser, releaser, help);
}
netsnmp_feature_child_of(agentx_unregister_config_handler, netsnmp_unused)
netsnmp_feature_child_of(agentx_unregister_config_handler, netsnmp_unused);
#ifndef NETSNMP_FEATURE_REMOVE_AGENTX_UNREGISTER_CONFIG_HANDLER
void
agentx_unregister_config_handler(const char *token)
@ -187,6 +203,21 @@ agentx_config_init(void)
agentx_register_config_handler("agentxsocket",
agentx_parse_agentx_socket, NULL,
"AgentX bind address");
agentx_register_config_handler("agentxRetries",
agentx_parse_agentx_retries, NULL,
"AgentX Retries");
/* default to 5 retries */
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_RETRIES, 5);
agentx_register_config_handler("agentxTimeout",
agentx_parse_agentx_timeout, NULL,
"AgentX Timeout (seconds)");
/* default to 1 second */
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_TIMEOUT, 1 * ONE_SEC);
#ifdef USING_AGENTX_MASTER_MODULE
/*
* tokens for master agent
@ -198,33 +229,20 @@ agentx_config_init(void)
agentx_register_config_handler("agentxperms",
agentx_parse_agentx_perms, NULL,
"AgentX socket permissions: socket_perms [directory_perms [username|userid [groupname|groupid]]]");
agentx_register_config_handler("agentxRetries",
agentx_parse_agentx_retries, NULL,
"AgentX Retries");
agentx_register_config_handler("agentxTimeout",
agentx_parse_agentx_timeout, NULL,
"AgentX Timeout (seconds)");
}
#endif /* USING_AGENTX_MASTER_MODULE */
#ifdef USING_AGENTX_SUBAGENT_MODULE
/*
* tokens for master agent
* tokens for subagent
*/
if (SUB_AGENT == agent_role) {
/*
* set up callbacks to initiate master agent pings for this session
*/
netsnmp_ds_register_config(ASN_INTEGER,
netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
NETSNMP_DS_LIB_APPTYPE),
"agentxPingInterval",
NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL);
/* ping and/or reconnect by default every 15 seconds */
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 15);
agentx_register_config_handler("agentxPingInterval",
agentx_parse_agentx_ping_interval, NULL,
"AgentX ping interval");
/* ping and/or reconnect by default every 15 seconds */
netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 15);
}
#endif /* USING_AGENTX_SUBAGENT_MODULE */
}

View File

@ -1,7 +1,7 @@
#ifndef __AGENTX_CONFIG_H__
#define __AGENTX_CONFIG_H__
config_belongs_in(agent_module)
config_belongs_in(agent_module);
#ifdef __cplusplus
extern "C" {

View File

@ -7,30 +7,30 @@
#include <stdio.h>
#include <errno.h>
#if HAVE_STDLIB_H
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <sys/types.h>
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@ -43,7 +43,7 @@
#include "agentx/client.h"
#include "agentx/subagent.h"
netsnmp_feature_require(set_agent_uptime)
netsnmp_feature_require(set_agent_uptime);
/*
* AgentX handling utility routines
@ -105,7 +105,7 @@ int
agentx_open_session(netsnmp_session * ss)
{
netsnmp_pdu *pdu, *response;
u_long timeout;
int timeout;
DEBUGMSGTL(("agentx/subagent", "opening session \n"));
if (ss == NULL || !IS_AGENTX_VERSION(ss->version)) {
@ -118,7 +118,7 @@ agentx_open_session(netsnmp_session * ss)
timeout = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_AGENTX_TIMEOUT);
if (timeout < 0)
pdu->time = 0;
pdu->time = 0;
else
/* for master TIMEOUT is usec, but Agentx Open specifies sec */
pdu->time = timeout/ONE_SEC;

View File

@ -1,7 +1,7 @@
#ifndef AGENTX_CLIENT_H
#define AGENTX_CLIENT_H
config_belongs_in(agent_module)
config_belongs_in(agent_module);
#ifdef __cplusplus
extern "C" {

View File

@ -15,7 +15,7 @@
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#if HAVE_IO_H
#ifdef HAVE_IO_H
#include <io.h>
#endif
@ -24,20 +24,20 @@
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_SYS_SOCKET_H
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#include <errno.h>
#if HAVE_UNISTD_H
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_SYS_STAT_H
@ -51,9 +51,9 @@
#include "agentx/protocol.h"
#include "agentx/master_admin.h"
netsnmp_feature_require(handler_mark_requests_as_delegated)
netsnmp_feature_require(unix_socket_paths)
netsnmp_feature_require(free_agent_snmp_session_by_session)
netsnmp_feature_require(handler_mark_requests_as_delegated);
netsnmp_feature_require(unix_socket_paths);
netsnmp_feature_require(free_agent_snmp_session_by_session);
void
real_init_master(void)
@ -178,13 +178,17 @@ real_init_master(void)
agentx_sock_user = -1;
if (agentx_sock_group == 0 )
agentx_sock_group = -1;
chown(name, agentx_sock_user, agentx_sock_group);
NETSNMP_IGNORE_RESULT(chown(name, agentx_sock_user,
agentx_sock_group));
}
}
#endif
session =
snmp_add_full(&sess, t, NULL, agentx_parse, NULL, NULL,
agentx_realloc_build, agentx_check_packet, NULL);
/* snmp_add_full() frees 't' upon failure. */
if (!session)
t = NULL;
}
if (session == NULL) {
netsnmp_transport_free(t);
@ -221,7 +225,7 @@ agentx_got_response(int operation,
/* response is too late, free the cache */
if (magic)
netsnmp_free_delegated_cache((netsnmp_delegated_cache*) magic);
return 0;
return 1;
}
requests = cache->requests;
@ -280,6 +284,11 @@ agentx_got_response(int operation,
netsnmp_free_delegated_cache(cache);
return 0;
case NETSNMP_CALLBACK_OP_RESEND:
DEBUGMSGTL(("agentx/master", "resend on session %8p req=0x%x\n",
session, (unsigned)reqid));
return 0;
case NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE:
/*
* This session is alive
@ -608,8 +617,6 @@ agentx_master_handler(netsnmp_mib_handler *handler,
result = snmp_async_send(ax_session, pdu, agentx_got_response, cb_data);
if (result == 0) {
snmp_free_pdu(pdu);
if (cb_data)
netsnmp_free_delegated_cache((netsnmp_delegated_cache*) cb_data);
}
return SNMP_ERR_NOERROR;

View File

@ -1,11 +1,11 @@
#ifndef _AGENTX_MASTER_H
#define _AGENTX_MASTER_H
config_belongs_in(agent_module)
config_belongs_in(agent_module);
config_require(agentx/protocol)
config_require(agentx/master_admin)
config_require(agentx/agentx_config)
config_require(agentx/protocol);
config_require(agentx/master_admin);
config_require(agentx/agentx_config);
void init_master(void);
void real_init_master(void);

View File

@ -13,20 +13,20 @@
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_SYS_SOCKET_H
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
@ -45,11 +45,11 @@
#include <net-snmp/agent/agent_sysORTable.h>
#include "master.h"
netsnmp_feature_require(unregister_mib_table_row)
netsnmp_feature_require(trap_vars_with_context)
netsnmp_feature_require(calculate_sectime_diff)
netsnmp_feature_require(allocate_globalcacheid)
netsnmp_feature_require(remove_index)
netsnmp_feature_require(unregister_mib_table_row);
netsnmp_feature_require(trap_vars_with_context);
netsnmp_feature_require(calculate_sectime_diff);
netsnmp_feature_require(allocate_globalcacheid);
netsnmp_feature_require(remove_index);
netsnmp_session *
find_agentx_session(netsnmp_session * session, int sessid)
@ -444,17 +444,12 @@ agentx_notify(netsnmp_session * session, netsnmp_pdu *pdu)
* as this is valid AgentX syntax.
*/
/* If a context name was specified, send the trap using that context.
* Otherwise, send the trap without the context using the old method */
if (pdu->contextName != NULL)
{
send_trap_vars_with_context(-1, -1, pdu->variables,
pdu->contextName);
}
else
{
/* If a context name was specified, send the trap using that context.
* Otherwise, send the trap without the context using the old method */
if (pdu->contextName != NULL)
send_trap_vars_with_context(-1, -1, pdu->variables, pdu->contextName);
else
send_trap_vars(-1, -1, pdu->variables);
}
return AGENTX_ERR_NOERROR;
}

View File

@ -1,7 +1,7 @@
#ifndef _AGENTX_MASTER_ADMIN_H
#define _AGENTX_MASTER_ADMIN_H
config_belongs_in(agent_module)
config_belongs_in(agent_module);
int handle_master_agentx_packet(int, netsnmp_session *,
int, netsnmp_pdu *, void *);

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
#ifndef AGENTX_PROTOCOL_H
#define AGENTX_PROTOCOL_H
config_belongs_in(agent_module)
config_belongs_in(agent_module);
#ifdef __cplusplus
extern "C" {

View File

@ -8,25 +8,25 @@
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#if HAVE_SYS_SOCKET_H
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#if HAVE_STRING_H
#ifdef HAVE_STRING_H
#include <string.h>
#else
#include <strings.h>
#endif
#if HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
@ -47,10 +47,10 @@
#include "subagent.h"
netsnmp_feature_child_of(agentx_subagent, agentx_all)
netsnmp_feature_child_of(agentx_enable_subagent, agentx_subagent)
netsnmp_feature_child_of(agentx_subagent, agentx_all);
netsnmp_feature_child_of(agentx_enable_subagent, agentx_subagent);
netsnmp_feature_require(remove_trap_session)
netsnmp_feature_require(remove_trap_session);
#ifdef USING_AGENTX_SUBAGENT_MODULE
@ -247,6 +247,8 @@ static void
send_agentx_error(netsnmp_session *session, netsnmp_pdu *pdu, int errstat, int errindex)
{
pdu = snmp_clone_pdu(pdu);
if (!pdu)
return;
pdu->command = AGENTX_MSG_RESPONSE;
pdu->version = session->version;
pdu->errstat = errstat;
@ -503,6 +505,9 @@ handle_agentx_packet(int operation, netsnmp_session * session, int reqid,
*/
internal_pdu = snmp_clone_pdu(pdu);
if (!internal_pdu)
return 1;
free(internal_pdu->contextName);
internal_pdu->contextName = (char *) internal_pdu->community;
internal_pdu->contextNameLen = internal_pdu->community_len;
internal_pdu->community = NULL;
@ -548,6 +553,8 @@ handle_subagent_response(int op, netsnmp_session * session, int reqid,
}
pdu = snmp_clone_pdu(pdu);
if (!pdu)
return 1;
DEBUGMSGTL(("agentx/subagent",
"handling AgentX response (cmd 0x%02x orig_cmd 0x%02x)"
" (req=0x%x,trans=0x%x,sess=0x%x)\n",
@ -642,6 +649,8 @@ handle_subagent_set_response(int op, netsnmp_session * session, int reqid,
(unsigned)pdu->command, (unsigned)pdu->reqid,
(unsigned)pdu->transid, (unsigned)pdu->sessid));
pdu = snmp_clone_pdu(pdu);
if (!pdu)
return 1;
asi = (struct agent_netsnmp_set_info *) magic;
retsess = asi->sess;
@ -675,11 +684,13 @@ handle_subagent_set_response(int op, netsnmp_session * session, int reqid,
pdu->variables = NULL; /* the variables were added by us */
}
netsnmp_assert(retsess != NULL);
pdu->command = AGENTX_MSG_RESPONSE;
pdu->version = retsess->version;
if (retsess && pdu) {
pdu->command = AGENTX_MSG_RESPONSE;
pdu->version = retsess->version;
if (!snmp_send(retsess, pdu)) {
if (!snmp_send(retsess, pdu))
snmp_free_pdu(pdu);
} else if (pdu) {
snmp_free_pdu(pdu);
}
DEBUGMSGTL(("agentx/subagent", " FINISHED\n"));
@ -870,6 +881,8 @@ subagent_open_master_session(void)
agentx_realloc_build, agentx_check_packet, NULL);
if (main_session == NULL) {
/* snmp_add_full() frees 't' upon failure. */
t = NULL;
if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
NETSNMP_DS_AGENT_NO_CONNECTION_WARNINGS)) {
char buf[1024];

View File

@ -1,14 +1,14 @@
#ifndef _AGENTX_SUBAGENT_H
#define _AGENTX_SUBAGENT_H
config_belongs_in(agent_module)
config_belongs_in(agent_module);
config_require(agentx/protocol)
config_require(agentx/client)
config_require(agentx/agentx_config)
config_require(agentx/protocol);
config_require(agentx/client);
config_require(agentx/agentx_config);
#ifndef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
config_error(agentx/subagent depends on the Callback transport)
config_error(agentx/subagent depends on the Callback transport);
#endif
int subagent_init(void);

View File

@ -3,54 +3,54 @@
/* these go into both the mini agent and the full agent */
config_require(snmpv3mibs)
config_require(snmpv3mibs);
/* very few default mibs */
config_add_mib(SNMPv2-MIB)
config_add_mib(IF-MIB)
config_add_mib(IP-MIB)
config_add_mib(TCP-MIB)
config_add_mib(UDP-MIB)
config_add_mib(SNMPv2-MIB);
config_add_mib(IF-MIB);
config_add_mib(IP-MIB);
config_add_mib(TCP-MIB);
config_add_mib(UDP-MIB);
#ifdef NETSNMP_MINI_AGENT
/* limit the mibII modules to the bare minimum */
config_require(mibII/snmp_mib)
config_require(mibII/system_mib)
config_require(mibII/sysORTable)
config_require(mibII/vacm_vars)
config_require(mibII/vacm_conf)
config_require(mibII/snmp_mib);
config_require(mibII/system_mib);
config_require(mibII/sysORTable);
config_require(mibII/vacm_vars);
config_require(mibII/vacm_conf);
#else /* !NETSNMP_MINI_AGENT == the full shabang */
config_require(mibII)
config_require(ucd_snmp)
config_require(notification)
config_require(notification-log-mib)
config_require(target)
config_require(agent_mibs)
config_require(agentx)
config_require(disman/event)
config_require(mibII);
config_require(ucd_snmp);
config_require(notification);
config_require(notification-log-mib);
config_require(target);
config_require(agent_mibs);
config_require(agentx);
config_require(disman/event);
#ifndef NETSNMP_NO_WRITE_SUPPORT
config_require(disman/schedule)
config_require(disman/schedule);
#endif /* !NETSNMP_NO_WRITE_SUPPORT */
config_require(utilities)
config_require(utilities);
/* default MIBs to auto-include for parsing */
/* NOTE: we consider these MIBs users will likely want to load by
default, even if they're not supporting it in the agent (ie, the
command line tools need to load them anyway) */
config_add_mib(HOST-RESOURCES-MIB)
config_add_mib(NOTIFICATION-LOG-MIB)
config_add_mib(DISMAN-EVENT-MIB)
config_add_mib(HOST-RESOURCES-MIB);
config_add_mib(NOTIFICATION-LOG-MIB);
config_add_mib(DISMAN-EVENT-MIB);
#ifndef NETSNMP_NO_WRITE_SUPPORT
config_add_mib(DISMAN-SCHEDULE-MIB)
config_add_mib(DISMAN-SCHEDULE-MIB);
#endif /* !NETSNMP_NO_WRITE_SUPPORT */
/* architecture specific extra modules */
/* these symbols are set in the host specific net-snmp/system/<os>.h files */
#ifdef NETSNMP_INCLUDE_HOST_RESOURCES
config_require(host)
config_require(host);
#endif
#endif

View File

@ -5,7 +5,7 @@
#include <limits.h>
netsnmp_feature_require(container_fifo)
netsnmp_feature_require(container_fifo);
#include "deliverByNotify.h"

View File

@ -1,18 +1,18 @@
#ifndef DELIVERBYNOTIFY_H
#define DELIVERBYNOTIFY_H 1
#if TIME_WITH_SYS_TIME
#ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
config_add_mib(NET-SNMP-PERIODIC-NOTIFY-MIB)
config_add_mib(NET-SNMP-PERIODIC-NOTIFY-MIB);
void init_deliverByNotify(void);

View File

@ -1,11 +1,11 @@
/*
* Wrapper for the full DisMan implementation
*/
config_require(disman/event-mib)
config_require(disman/expression-mib)
config_require(disman/event-mib);
config_require(disman/expression-mib);
#ifndef NETSNMP_NO_WRITE_SUPPORT
/* the schedule mib is all about writing (SETs) */
config_require(disman/schedule)
config_require(disman/schedule);
#endif /* !NETSNMP_NO_WRITE_SUPPORT */
/* config_require(disman/nslookup-mib) */
/* config_require(disman/ping-mib) */

View File

@ -1,2 +1,2 @@
config_require(disman/event)
config_require(disman/event);

View File

@ -1,34 +1,34 @@
config_add_mib(DISMAN-EVENT-MIB)
config_add_mib(DISMAN-EVENT-MIB);
/*
* wrapper for the new disman event mib implementation code files
*/
config_require(disman/event/mteScalars)
config_require(disman/event/mteTrigger)
config_require(disman/event/mteTriggerTable)
config_require(disman/event/mteTriggerDeltaTable)
config_require(disman/event/mteTriggerExistenceTable)
config_require(disman/event/mteTriggerBooleanTable)
config_require(disman/event/mteTriggerThresholdTable)
config_require(disman/event/mteTriggerConf)
config_require(disman/event/mteEvent)
config_require(disman/event/mteEventTable)
config_require(disman/event/mteEventSetTable)
config_require(disman/event/mteEventNotificationTable)
config_require(disman/event/mteEventConf)
config_require(disman/event/mteObjects)
config_require(disman/event/mteObjectsTable)
config_require(disman/event/mteObjectsConf)
config_require(disman/event/mteScalars);
config_require(disman/event/mteTrigger);
config_require(disman/event/mteTriggerTable);
config_require(disman/event/mteTriggerDeltaTable);
config_require(disman/event/mteTriggerExistenceTable);
config_require(disman/event/mteTriggerBooleanTable);
config_require(disman/event/mteTriggerThresholdTable);
config_require(disman/event/mteTriggerConf);
config_require(disman/event/mteEvent);
config_require(disman/event/mteEventTable);
config_require(disman/event/mteEventSetTable);
config_require(disman/event/mteEventNotificationTable);
config_require(disman/event/mteEventConf);
config_require(disman/event/mteObjects);
config_require(disman/event/mteObjectsTable);
config_require(disman/event/mteObjectsConf);
/*
* conflicts with the previous implementation
*/
config_exclude(disman/mteTriggerTable)
config_exclude(disman/mteTriggerDeltaTable)
config_exclude(disman/mteTriggerExistenceTable)
config_exclude(disman/mteTriggerBooleanTable)
config_exclude(disman/mteTriggerThresholdTable)
config_exclude(disman/mteObjectsTable)
config_exclude(disman/mteEventTable)
config_exclude(disman/mteEventNotificationTable)
config_exclude(disman/mteTriggerTable);
config_exclude(disman/mteTriggerDeltaTable);
config_exclude(disman/mteTriggerExistenceTable);
config_exclude(disman/mteTriggerBooleanTable);
config_exclude(disman/mteTriggerThresholdTable);
config_exclude(disman/mteObjectsTable);
config_exclude(disman/mteEventTable);
config_exclude(disman/mteEventNotificationTable);

View File

@ -13,9 +13,9 @@
#include "disman/event/mteTrigger.h"
#include "disman/event/mteObjects.h"
netsnmp_feature_child_of(disman_debugging, libnetsnmpmibs)
netsnmp_feature_child_of(mteevent, libnetsnmpmibs)
netsnmp_feature_child_of(mteevent_removeentry, mteevent)
netsnmp_feature_child_of(disman_debugging, libnetsnmpmibs);
netsnmp_feature_child_of(mteevent, libnetsnmpmibs);
netsnmp_feature_child_of(mteevent_removeentry, mteevent);
netsnmp_tdata *event_table_data;

View File

@ -12,7 +12,7 @@
#include "disman/event/mteEvent.h"
#include "disman/event/mteEventConf.h"
netsnmp_feature_require(iquery)
netsnmp_feature_require(iquery);
/** Initializes the mteEventsConf module */
void

View File

@ -1,7 +1,7 @@
#ifndef MTEEVENTCONF_H
#define MTEEVENTCONF_H
config_require(utilities/iquery)
config_require(utilities/iquery);
/*
* function declarations

View File

@ -13,10 +13,10 @@
#include "disman/event/mteEvent.h"
#include "disman/event/mteEventNotificationTable.h"
netsnmp_feature_require(table_tdata)
netsnmp_feature_require(table_tdata);
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(check_vb_type_and_max_size)
netsnmp_feature_require(check_vb_oid)
netsnmp_feature_require(check_vb_type_and_max_size);
netsnmp_feature_require(check_vb_oid);
#endif /* NETSNMP_NO_WRITE_SUPPORT */
static netsnmp_table_registration_info *table_info;

View File

@ -13,11 +13,11 @@
#include "disman/event/mteEvent.h"
#include "disman/event/mteEventSetTable.h"
netsnmp_feature_require(table_tdata)
netsnmp_feature_require(table_tdata);
#ifndef NETSNMP_NO_WRITE_SUPPORT
netsnmp_feature_require(check_vb_type_and_max_size)
netsnmp_feature_require(check_vb_oid)
netsnmp_feature_require(check_vb_truthvalue)
netsnmp_feature_require(check_vb_type_and_max_size);
netsnmp_feature_require(check_vb_oid);
netsnmp_feature_require(check_vb_truthvalue);
#endif /* NETSNMP_NO_WRITE_SUPPORT */
static netsnmp_table_registration_info *table_info;

Some files were not shown because too many files have changed in this diff Show More