another fix (hopefully last one) to issue #10
[luasnmp.git] / trapserver.lua
blob65873b761165196ff6638b80c6a3923b36184910
1 local snmp = require "snmp"
2 local mib = snmp.mib
3 require "stdlib"
4 local logging = require "logging.console"
6 local log = logging.console("%message")
7 log:setLevel("DEBUG")
8 local info = function(fmt, ...) log:info(string.format(fmt.."\n", unpack(arg))) end
9 local debug = function(fmt, ...) log:debug(string.format(fmt.."\n", unpack(arg))) end
11 info("Initialising SNMP")
12 if snmp.gettrapd() == "straps" then
13 local err = snmp.inittrap("straps")
14 assert(not err, err)
15 else
16 info("Support for `%s' has been selected", snmp.gettrapd())
17 end
19 local function inform_cb(vlist, ip, session)
20 debug(" DEFAULT INFORM CALLBACK: inform sent by : "..ip)
21 for _,vb in ipairs(vlist) do
22 debug(" %s", snmp.sprintvar(vb))
23 end
24 inform_done = true
25 end
26 local function trap_cb(vlist, ip, host, session)
27 debug(" DEFAULT TRAP CALLBACK: trap sent by :%s (%s)", host, ip)
28 for _,vb in ipairs(vlist) do
29 debug(" %s", session.sprintvar(vb))
30 end
31 trap_done = true
32 end
35 local sess, err = snmp.open{
36 community = "private",
37 peer = "localhost",
38 version = snmp.SNMPv2C,
39 callback = test_cb,
40 inform = inform_cb,
41 trap = trap_cb
44 --os.execute("snmpinform -v 2c -c public localhost 3 0 sysName.0 s 'hello'")
45 --while true do
46 -- err = snmp.event()
47 --end
48 err = snmp.loop()
49 print(err)
50 assert(not err, err)