[go: up one dir, main page]

File: snmp-mpd-mib.c

package info (click to toggle)
scli 0.3.1-3.1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,872 kB
  • ctags: 8,627
  • sloc: ansic: 32,657; sh: 7,388; makefile: 321
file content (114 lines) | stat: -rw-r--r-- 3,257 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*							-- DO NOT EDIT --
 * Generated by smidump version 0.4.3:
 *   smidump -f scli SNMP-MPD-MIB
 *
 * Derived from SNMP-MPD-MIB:
 *   The MIB for Message Processing and Dispatching
 *   
 *   Copyright (C) The Internet Society (2002). This
 *   version of this MIB module is part of RFC 3412;
 *   see the RFC itself for full legal notices.
 *
 * Revision 2002-10-14 00:00:
 *   Updated addresses, published as RFC 3412.
 *
 * Revision 1999-05-04 16:36:
 *   Updated addresses, published as RFC 2572.
 *
 * Revision 1997-09-30 00:00:
 *   Original version, published as RFC 2272.
 *
 * $Id: snmp-mpd-mib.c 1788 2006-02-21 20:47:18Z schoenw $
 */

#include "snmp-mpd-mib.h"

static guint32 const snmpMPDStats_oid[] = {1, 3, 6, 1, 6, 3, 11, 2, 1};

static GNetSnmpAttribute snmpMPDStats_attr[] = {
    { 1, GNET_SNMP_VARBIND_TYPE_COUNTER32,
      SNMP_MPD_MIB_SNMPUNKNOWNSECURITYMODELS, "snmpUnknownSecurityModels",
       NULL,
      G_STRUCT_OFFSET(snmp_mpd_mib_snmpMPDStats_t, snmpUnknownSecurityModels),
      0,
      0 },
    { 2, GNET_SNMP_VARBIND_TYPE_COUNTER32,
      SNMP_MPD_MIB_SNMPINVALIDMSGS, "snmpInvalidMsgs",
       NULL,
      G_STRUCT_OFFSET(snmp_mpd_mib_snmpMPDStats_t, snmpInvalidMsgs),
      0,
      0 },
    { 3, GNET_SNMP_VARBIND_TYPE_COUNTER32,
      SNMP_MPD_MIB_SNMPUNKNOWNPDUHANDLERS, "snmpUnknownPDUHandlers",
       NULL,
      G_STRUCT_OFFSET(snmp_mpd_mib_snmpMPDStats_t, snmpUnknownPDUHandlers),
      0,
      0 },
    { 0, 0, 0, NULL }
};


snmp_mpd_mib_snmpMPDStats_t *
snmp_mpd_mib_new_snmpMPDStats()
{
    snmp_mpd_mib_snmpMPDStats_t *snmpMPDStats;

    snmpMPDStats = (snmp_mpd_mib_snmpMPDStats_t *) g_malloc0(sizeof(snmp_mpd_mib_snmpMPDStats_t) + sizeof(gpointer));
    return snmpMPDStats;
}

static inline snmp_mpd_mib_snmpMPDStats_t *
assign_snmpMPDStats(GList *vbl)
{
    snmp_mpd_mib_snmpMPDStats_t *snmpMPDStats;
    char *p;

    snmpMPDStats = snmp_mpd_mib_new_snmpMPDStats();
    p = (char *) snmpMPDStats + sizeof(snmp_mpd_mib_snmpMPDStats_t);
    * (GList **) p = vbl;

    gnet_snmp_attr_assign(vbl, snmpMPDStats_oid, G_N_ELEMENTS(snmpMPDStats_oid),
                      snmpMPDStats_attr, snmpMPDStats);

    return snmpMPDStats;
}

void
snmp_mpd_mib_get_snmpMPDStats(GNetSnmp *s, snmp_mpd_mib_snmpMPDStats_t **snmpMPDStats, gint64 mask)
{
    GList *in = NULL, *out = NULL;
    static guint32 base[] = {1, 3, 6, 1, 6, 3, 11, 2, 1, 0};

    *snmpMPDStats = NULL;

    gnet_snmp_attr_get(s, &in, base, 10, 9, snmpMPDStats_attr, mask);

    out = gnet_snmp_sync_getnext(s, in);
    g_list_foreach(in, (GFunc) gnet_snmp_varbind_delete, NULL);
    g_list_free(in);
    if (out) {
        if (s->error_status != GNET_SNMP_PDU_ERR_NOERROR) {
            g_list_foreach(out, (GFunc) gnet_snmp_varbind_delete, NULL);
            g_list_free(out);
            return;
        }
        *snmpMPDStats = assign_snmpMPDStats(out);
    }
}

void
snmp_mpd_mib_free_snmpMPDStats(snmp_mpd_mib_snmpMPDStats_t *snmpMPDStats)
{
    GList *vbl;
    char *p;

    if (snmpMPDStats) {
        p = (char *) snmpMPDStats + sizeof(snmp_mpd_mib_snmpMPDStats_t);
        vbl = * (GList **) p;
        g_list_foreach(vbl, (GFunc) gnet_snmp_varbind_delete, NULL);
        g_list_free(vbl);
        g_free(snmpMPDStats);
    }
}