From: Chun Tian
Subject: A new SNMP client (pure lisp)
Date: 
Message-ID: <1190955391.185333.83010@y42g2000hsy.googlegroups.com>
Hi, all

I'm a Chinese Linux system administrator and lisp newbie, and I'm
wriing a new pure lisp SNMP client package with many features
including:

 * An ASN.1 syntax parser which can build MIB tree direct from their
ASN.1 definitions.
 * Fast and extensible BER encode/decode design based on CLOS,
 * UDP networking based on IOlib project.

Some demo:

CL-USER 1 > (clc:clc-require :net-snmp)
; Loading text file /home/binghe/cl-net-snmp/net-snmp.asd
; Loading text file /usr/share/common-lisp/source/cl-zebu/zebu.asd
; Loading text file /usr/share/common-lisp/source/cl-iolib/iolib.asd
; Loading text file /usr/share/common-lisp/source/cl-iolib/net.dns-
client.asd
...
; Loading fasl file /var/cache/common-lisp-controller/1001/lispworks/
local/home/binghe/cl-net-snmp/snmp/snmp-get.64ufasl
; Loading fasl file /var/cache/common-lisp-controller/1001/lispworks/
local/home/binghe/cl-net-snmp/snmp/snmp-walk.64ufasl
T

CL-USER 2 > (mib:build-tree)
Parsing SNMPv2-SMI.
Parsing SNMPv2-MIB.
Parsing SNMPv2-TM.
Parsing SNMP-TARGET-MIB.
Parsing SNMP-FRAMEWORK-MIB.
Parsing SNMP-COMMUNITY-MIB.
Parsing SNMP-MPD-MIB.
Parsing SNMP-NOTIFICATION-MIB.
Parsing SNMP-PROXY-MIB.
Parsing SNMP-VIEW-BASED-ACM-MIB.
Parsing SNMP-USER-BASED-SM-MIB.
Parsing SNMP-USM-AES-MIB.
Parsing SNMP-USM-DH-OBJECTS-MIB.
Parsing IF-MIB.
Parsing INET-ADDRESS-MIB.
Parsing TRANSPORT-ADDRESS-MIB.
Parsing IP-MIB.
Parsing TCP-MIB.
Parsing UDP-MIB.
Parsing IPV6-MIB.
Parsing IPV6-ICMP-MIB.
Parsing IPV6-TCP-MIB.
Parsing IPV6-UDP-MIB.
Parsing IP-FORWARD-MIB.
Parsing AGENTX-MIB.
Parsing BGP4-MIB.
Parsing DISMAN-EVENT-MIB.
Parsing DISMAN-SCHEDULE-MIB.
Parsing DISMAN-SCRIPT-MIB.
Parsing EtherLike-MIB.
Parsing HCNUM-TC.
Parsing HOST-RESOURCES-MIB.
Parsing HOST-RESOURCES-TYPES.
Parsing IANA-ADDRESS-FAMILY-NUMBERS-MIB.
Parsing IANAifType-MIB.
Parsing IANA-LANGUAGE-MIB.
Parsing IANA-RTPROTO-MIB.
Parsing IF-INVERTED-STACK-MIB.
Parsing NET-SNMP-MIB.
Parsing NET-SNMP-TC.
Parsing NET-SNMP-AGENT-MIB.
Parsing NET-SNMP-EXTEND-MIB.
Parsing NET-SNMP-EXAMPLES-MIB.
Parsing UCD-SNMP-MIB.
Parsing UCD-DISKIO-MIB.
Parsing UCD-IPFWACC-MIB.
Parsing UCD-DLMOD-MIB.
Parsing UCD-DEMO-MIB.
Parsing LM-SENSORS-MIB.
Parsing RMON-MIB.
Parsing NOTIFICATION-LOG-MIB.
Parsing SMUX-MIB.
Parsing LINUX-HA-MIB.
T

CL-USER 3 > (snmp:snmp-get "localhost" "sysName.0")
("2950.lab.163.org")
#<COM.NETEASE.SNMP:V2C-SESSION 40500D551B>

CL-USER 4 > (snmp:snmp-get "localhost" "laLoadInt.1" "laLoadInt.2"
"laLoadInt.3")
(535 604 622)
#<COM.NETEASE.SNMP:V2C-SESSION 405010BB73>

CL-USER 5 > mib:*mib-tree*
((NIL NIL NIL)
 (((0) ("zero") #<COM.NETEASE.SMI:OBJECT-ID 0 {zero}>)
  (((0 0) ("zeroDotZero" "zero") #<COM.NETEASE.SMI:OBJECT-ID 0.0
{zero.zeroDotZero}>)))
 (((1) ("iso") #<COM.NETEASE.SMI:OBJECT-ID 1 {iso}>)
  (((3 1) ("org" "iso") #<COM.NETEASE.SMI:OBJECT-ID 1.3 {iso.org}>)
   (((6 3 1) ("dod" "org" "iso") #<COM.NETEASE.SMI:OBJECT-ID 1.3.6
{iso.org.dod}>)
    (((1 6 3 1)
      ("internet" "dod" "org" "iso")
      #<COM.NETEASE.SMI:OBJECT-ID 1.3.6.1 {iso.org.dod.internet}>)
     (((1 1 6 3 1)
       ("directory" "internet" "dod" "org" "iso")
       #<COM.NETEASE.SMI:OBJECT-ID 1.3.6.1.1
{iso.org.dod.internet.directory}>))
     (((2 1 6 3 1)
       ("mgmt" "internet" "dod" "org" "iso")
       #<COM.NETEASE.SMI:OBJECT-ID 1.3.6.1.2
{iso.org.dod.internet.mgmt}>)
...(very long)...

And a graphical MIB browser based on LispWorks/CAPI.

If anyone be interesting in my code, see this:

http://common-lisp.net/project/cl-net-snmp/

Thanks.