~ubuntu-branches/ubuntu/gutsy/net-snmp/gutsy-security

« back to all changes in this revision

Viewing changes to perl/agent/default_store/default_store.xs

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2004-09-13 12:06:21 UTC
  • Revision ID: james.westby@ubuntu.com-20040913120621-g952ntonlleihcvm
Tags: upstream-5.1.1
ImportĀ upstreamĀ versionĀ 5.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "EXTERN.h"
 
2
#include "perl.h"
 
3
#include "XSUB.h"
 
4
 
 
5
#include <net-snmp/agent/ds_agent.h>
 
6
 
 
7
static int
 
8
not_here(char *s)
 
9
{
 
10
    croak("%s not implemented on this architecture", s);
 
11
    return -1;
 
12
}
 
13
 
 
14
static double
 
15
constant_NETSNMP_DS_AGENT_P(char *name, int len, int arg)
 
16
{
 
17
    switch (name[18 + 0]) {
 
18
    case 'E':
 
19
        if (strEQ(name + 18, "ERL_INIT_FILE")) {        /* NETSNMP_DS_AGENT_P removed */
 
20
#ifdef NETSNMP_DS_AGENT_PERL_INIT_FILE
 
21
            return NETSNMP_DS_AGENT_PERL_INIT_FILE;
 
22
#else
 
23
            goto not_there;
 
24
#endif
 
25
        }
 
26
    case 'O':
 
27
        if (strEQ(name + 18, "ORTS")) { /* NETSNMP_DS_AGENT_P removed */
 
28
#ifdef NETSNMP_DS_AGENT_PORTS
 
29
            return NETSNMP_DS_AGENT_PORTS;
 
30
#else
 
31
            goto not_there;
 
32
#endif
 
33
        }
 
34
    case 'R':
 
35
        if (strEQ(name + 18, "ROGNAME")) {      /* NETSNMP_DS_AGENT_P removed */
 
36
#ifdef NETSNMP_DS_AGENT_PROGNAME
 
37
            return NETSNMP_DS_AGENT_PROGNAME;
 
38
#else
 
39
            goto not_there;
 
40
#endif
 
41
        }
 
42
    }
 
43
    errno = EINVAL;
 
44
    return 0;
 
45
 
 
46
not_there:
 
47
    errno = ENOENT;
 
48
    return 0;
 
49
}
 
50
 
 
51
static double
 
52
constant_NETSNMP_DS_AGENT_A(char *name, int len, int arg)
 
53
{
 
54
    if (18 + 6 >= len ) {
 
55
        errno = EINVAL;
 
56
        return 0;
 
57
    }
 
58
    switch (name[18 + 6]) {
 
59
    case 'M':
 
60
        if (strEQ(name + 18, "GENTX_MASTER")) { /* NETSNMP_DS_AGENT_A removed */
 
61
#ifdef NETSNMP_DS_AGENT_AGENTX_MASTER
 
62
            return NETSNMP_DS_AGENT_AGENTX_MASTER;
 
63
#else
 
64
            goto not_there;
 
65
#endif
 
66
        }
 
67
    case 'P':
 
68
        if (strEQ(name + 18, "GENTX_PING_INTERVAL")) {  /* NETSNMP_DS_AGENT_A removed */
 
69
#ifdef NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL
 
70
            return NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL;
 
71
#else
 
72
            goto not_there;
 
73
#endif
 
74
        }
 
75
    }
 
76
    errno = EINVAL;
 
77
    return 0;
 
78
 
 
79
not_there:
 
80
    errno = ENOENT;
 
81
    return 0;
 
82
}
 
83
 
 
84
static double
 
85
constant(char *name, int len, int arg)
 
86
{
 
87
    errno = 0;
 
88
    if (0 + 17 >= len ) {
 
89
        errno = EINVAL;
 
90
        return 0;
 
91
    }
 
92
    switch (name[0 + 17]) {
 
93
    case 'A':
 
94
        if (!strnEQ(name + 0,"NETSNMP_DS_AGENT_", 17))
 
95
            break;
 
96
        return constant_NETSNMP_DS_AGENT_A(name, len, arg);
 
97
    case 'D':
 
98
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_DISABLE_PERL")) { /*  removed */
 
99
#ifdef NETSNMP_DS_AGENT_DISABLE_PERL
 
100
            return NETSNMP_DS_AGENT_DISABLE_PERL;
 
101
#else
 
102
            goto not_there;
 
103
#endif
 
104
        }
 
105
    case 'F':
 
106
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_FLAGS")) {        /*  removed */
 
107
#ifdef NETSNMP_DS_AGENT_FLAGS
 
108
            return NETSNMP_DS_AGENT_FLAGS;
 
109
#else
 
110
            goto not_there;
 
111
#endif
 
112
        }
 
113
    case 'G':
 
114
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_GROUPID")) {      /*  removed */
 
115
#ifdef NETSNMP_DS_AGENT_GROUPID
 
116
            return NETSNMP_DS_AGENT_GROUPID;
 
117
#else
 
118
            goto not_there;
 
119
#endif
 
120
        }
 
121
    case 'H':
 
122
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_H")) {    /*  removed */
 
123
#ifdef NETSNMP_DS_AGENT_H
 
124
            return NETSNMP_DS_AGENT_H;
 
125
#else
 
126
            goto not_there;
 
127
#endif
 
128
        }
 
129
    case 'I':
 
130
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_INTERNAL_SECNAME")) {     /*  removed */
 
131
#ifdef NETSNMP_DS_AGENT_INTERNAL_SECNAME
 
132
            return NETSNMP_DS_AGENT_INTERNAL_SECNAME;
 
133
#else
 
134
            goto not_there;
 
135
#endif
 
136
        }
 
137
    case 'N':
 
138
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_NO_ROOT_ACCESS")) {       /*  removed */
 
139
#ifdef NETSNMP_DS_AGENT_NO_ROOT_ACCESS
 
140
            return NETSNMP_DS_AGENT_NO_ROOT_ACCESS;
 
141
#else
 
142
            goto not_there;
 
143
#endif
 
144
        }
 
145
    case 'P':
 
146
        if (!strnEQ(name + 0,"NETSNMP_DS_AGENT_", 17))
 
147
            break;
 
148
        return constant_NETSNMP_DS_AGENT_P(name, len, arg);
 
149
    case 'Q':
 
150
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_QUIT_IMMEDIATELY")) {     /*  removed */
 
151
#ifdef NETSNMP_DS_AGENT_QUIT_IMMEDIATELY
 
152
            return NETSNMP_DS_AGENT_QUIT_IMMEDIATELY;
 
153
#else
 
154
            goto not_there;
 
155
#endif
 
156
        }
 
157
    case 'R':
 
158
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_ROLE")) { /*  removed */
 
159
#ifdef NETSNMP_DS_AGENT_ROLE
 
160
            return NETSNMP_DS_AGENT_ROLE;
 
161
#else
 
162
            goto not_there;
 
163
#endif
 
164
        }
 
165
    case 'U':
 
166
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_USERID")) {       /*  removed */
 
167
#ifdef NETSNMP_DS_AGENT_USERID
 
168
            return NETSNMP_DS_AGENT_USERID;
 
169
#else
 
170
            goto not_there;
 
171
#endif
 
172
        }
 
173
    case 'V':
 
174
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_VERBOSE")) {      /*  removed */
 
175
#ifdef NETSNMP_DS_AGENT_VERBOSE
 
176
            return NETSNMP_DS_AGENT_VERBOSE;
 
177
#else
 
178
            goto not_there;
 
179
#endif
 
180
        }
 
181
    case 'X':
 
182
        if (strEQ(name + 0, "NETSNMP_DS_AGENT_X_SOCKET")) {     /*  removed */
 
183
#ifdef NETSNMP_DS_AGENT_X_SOCKET
 
184
            return NETSNMP_DS_AGENT_X_SOCKET;
 
185
#else
 
186
            goto not_there;
 
187
#endif
 
188
        }
 
189
    }
 
190
    errno = EINVAL;
 
191
    return 0;
 
192
 
 
193
not_there:
 
194
    errno = ENOENT;
 
195
    return 0;
 
196
}
 
197
 
 
198
 
 
199
MODULE = NetSNMP::agent::default_store          PACKAGE = NetSNMP::agent::default_store         
 
200
 
 
201
 
 
202
double
 
203
constant(sv,arg)
 
204
    PREINIT:
 
205
        STRLEN          len;
 
206
    INPUT:
 
207
        SV *            sv
 
208
        char *          s = SvPV(sv, len);
 
209
        int             arg
 
210
    CODE:
 
211
        RETVAL = constant(s,len,arg);
 
212
    OUTPUT:
 
213
        RETVAL
 
214