6 #include <net-snmp/net-snmp-config.h>
7 #include <net-snmp/net-snmp-includes.h>
9 /* pulled from Dave's, yet-to-be-used, net-snmp library rewrite.
10 autocompatibility for the future? */
12 #define NETSNMP_NAMEBUF_LEN 128
13 typedef struct netsnmp_oid_s {
16 oid namebuf[ NETSNMP_NAMEBUF_LEN ];
22 croak("%s not implemented on this architecture", s);
27 constant(char *name, int len, int arg)
34 nso_newarrayptr(oid *name, size_t name_len)
37 RETVAL = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
38 RETVAL->name = RETVAL->namebuf;
39 RETVAL->len = name_len;
40 memcpy(RETVAL->name, name, name_len * sizeof(oid));
44 MODULE = NetSNMP::OID PACKAGE = NetSNMP::OID PREFIX=nso_
47 nso_newptr(initstring)
50 RETVAL = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
51 RETVAL->name = RETVAL->namebuf;
52 RETVAL->len = sizeof(RETVAL->namebuf)/sizeof(RETVAL->namebuf[0]);
53 if (!snmp_parse_oid(initstring, (oid *) RETVAL->name, &RETVAL->len)) {
54 fprintf(stderr, "Can't parse: %s\n", initstring);
67 char * s = SvPV(sv, len);
70 RETVAL = constant(s,len,arg);
75 _snmp_oid_compare(oid1, oid2)
79 RETVAL = snmp_oid_compare((oid *) oid1->name, oid1->len,
80 (oid *) oid2->name, oid2->len);
84 MODULE = NetSNMP::OID PACKAGE = netsnmp_oidPtr PREFIX = nsop_
96 static char mystr[SNMP_MAXBUF];
100 snprintf(mystr, sizeof(mystr), "Illegal OID");
102 snprint_objid(mystr, sizeof(mystr),
103 (oid *) oid1->name, oid1->len);
117 EXTEND(SP, oid1->len);
118 for(i=0; i < oid1->len; i++) {
119 PUSHs(sv_2mortal(newSVnv(oid1->name[i])));
123 nsop_append(oid1, string)
128 size_t name_len = 128;
132 if (!snmp_parse_oid(string, (oid *) name, &name_len)) {
135 if (oid1->len + name_len > 128) {
138 for(i = 0; i < name_len; i++) {
139 oid1->name[i+oid1->len] = name[i];
141 oid1->len += name_len;
145 nsop_append_oid(oid1, oid2)
152 if (oid1->len + oid2->len > 128) {
155 for(i = 0; i < oid2->len; i++) {
156 oid1->name[i+oid1->len] = oid2->name[i];
158 oid1->len += oid2->len;
178 oid2 = nso_newarrayptr(oid1->name, oid1->len);