enum { Aseq = 0x30, Aint = 0x02, Aoctstr = 0x04, Anull = 0x05, Aobjid = 0x06, Aipaddr = 0x40, Acounter = 0x41, Agauge = 0x42, Atimeticks = 0x43, Pget = 0xa0, Pgetn, Presp, Pset, Ptrap, Maxoids = 128, // from the spec Mpdu = 4, }; typedef struct Oid Oid; struct Oid { uchar *buf; int len; }; typedef struct SnmpPdu SnmpPdu; struct SnmpPdu { char *objid; /* "1.3.6.1.4.1.429.1.1.3.5.0" */ int type; int len; union { int i; char *s; }; }; typedef struct Snmp Snmp; struct Snmp { int vers; int private; int type; int reqid; int estat, eindex; int npdu; int mpdu; SnmpPdu pdu[Mpdu]; }; extern int a1readint(uchar*, int); extern int a1readlen(uchar*, int*); extern void Sfree(Snmp*); extern Snmp* Salloc(void); extern Snmp* Schkpdu(Snmp*, int); extern int Sparse(void *buf, int nbuf, Snmp *dst); extern int Sunparse(Snmp *s, void *va, int na); extern int oidfmt(Fmt *); extern int Sfmt(Fmt *); extern int Sscan(SnmpPdu *, char *); extern void Sdump(Snmp *); extern int dosnmp(int, Snmp*, Snmp*); extern int chatty; #pragma varargck type "A" Snmp* #pragma varargck type "O" Oid