~ubuntu-branches/ubuntu/edgy/net-snmp/edgy-updates

« back to all changes in this revision

Viewing changes to win32/dist/htmlhelp/Developer_FAQ.html

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-03-31 04:21:37 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050331042137-z0vw1grslj6cek9k
Tags: 5.1.2-6ubuntu2
Apply safe-but-hackish patch by Henrique de Moraes Holschuh to
fix the libdir in libsnmp5-dev's .la files (Ubuntu bug #8393)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 
2
<html>
 
3
  <head>
 
4
    <title>rstory's NET-SNMP Developers Frequently Asked Questions Page</title>
 
5
  </head>
 
6
 
 
7
  <body bgcolor="#ffffff" background="ucd-snmp-bg3.gif">
 
8
    <div align=center>
 
9
    <h1>rstory's NET-SNMP Developers Frequently Asked Questions Page</h1>
 
10
    </div>
 
11
<hr>
 
12
    <div align=center>
 
13
    <font size=-1>
 
14
      <a href="FAQ.html">[Official FAQ]</a> | 
 
15
        <a href="#tokens">[Debug tokens]</a> | 
 
16
        <a href="#agentx">[AgentX]</a> | 
 
17
        <a href="#install">[Install]</a> | 
 
18
        <a href="#disable">[Disable]</a> | 
 
19
        <a href="#errors">[Errors]</a> | 
 
20
        <a href="#bits">[Bits]</a> | 
 
21
        <a href="#embedded">[embedded perl]</a> | 
 
22
        <a href="#smux">[SMUX]</a> | 
 
23
        <a href="#entid">[Enterprise OID]</a> | 
 
24
        <a href="#autodeps">[Automatic dependencies]</a> | 
 
25
        <a href="#cross">[Cross compiling]</a> | 
 
26
        <a href="#static">[Static linking]</a> | 
 
27
        <a href="#readfds">[readfds]</a> | 
 
28
        <a href="#sharing">[Sharing data]</a> | 
 
29
        <a href="man1-mib2c.1.html">[mib2c.array-user.conf]</a> | 
 
30
        <a href="#steps">[Baby Steps flow]</a> | 
 
31
      </font>
 
32
    </div>
 
33
<hr>
 
34
This is just a quick page to answer some common questions that aren't covered
 
35
in the <a href="/FAQ.html">official FAQ</a>.
 
36
 
 
37
<a name="agentx"></a> <h2>AgentX</h2>
 
38
<pre> To have the sub-agent communicate on a different socket, or with
 
39
different permissions, add these line to your snmpd.conf
 
40
 
 
41
        # socket path
 
42
        agentxsocket /tmp/agentx
 
43
 
 
44
        # perms socket directory userid groupid
 
45
        agentxperms 777 777 rstory rstory
 
46
 
 
47
 
 
48
and add this line to your subagent:
 
49
 
 
50
        netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET, "/tmp/agentx");
 
51
 
 
52
*before* you call init_agent().
 
53
 
 
54
 </pre>
 
55
 
 
56
<a name="install"></a><h2>install</h2>
 
57
<pre> INSTALL_PREFIX goes before everything.. so, with the defaults, just
 
58
setting INSTALL_PREFIX=/tmp would result in /tmp/usr/local.. 
 
59
so INSTALL_PREFIX=/tmp prefix=/usr exec_prefix=/usr would go into /tmp/usr
 
60
 </pre>
 
61
 
 
62
<a name="disable"></a><h2>disable</h2>
 
63
<pre> If you are using net-snmp Version >= 5.1, then the following configure
 
64
options may be useful to you:
 
65
 
 
66
  --disable-agent                 Do not build the agent (snmpd).
 
67
  --disable-applications          Do not build the apps (snmpget, ...).
 
68
  --disable-manuals               Do not install the manuals.
 
69
  --disable-scripts               Do not install the scripts (mib2c, ...).
 
70
  --disable-mibs                  Do not install the mib files.
 
71
  --disable-mib-loading            Do not include code that parses and
 
72
                                   manipulates the mib files.
 
73
 </pre>
 
74
 
 
75
<a name="errors"></a><h2>errors</h2>
 
76
<pre> from RFC 3416:
 
77
 
 
78
                   noError(0),
 
79
                   tooBig(1),
 
80
                   noSuchName(2),      -- for proxy compatibility
 
81
                   badValue(3),        -- for proxy compatibility
 
82
                   readOnly(4),        -- for proxy compatibility
 
83
                   genErr(5),
 
84
                   noAccess(6),
 
85
                   wrongType(7),
 
86
                   wrongLength(8),
 
87
                   wrongEncoding(9),
 
88
                   wrongValue(10),
 
89
                   noCreation(11),
 
90
                   inconsistentValue(12),
 
91
                   resourceUnavailable(13),
 
92
                   commitFailed(14),
 
93
                   undoFailed(15),
 
94
                   authorizationError(16),
 
95
                   notWritable(17),
 
96
                   inconsistentName(18)
 
97
 </pre>
 
98
 
 
99
<a name="bits"></a><h2>bits</h2>
 
100
<pre> SNMPv1 use BIT STRINGs (RFC 1212, 5.1.1):
 
101
 
 
102
          (3)  An object with BIT STRING syntax containing no more than
 
103
               32 bits becomes an INTEGER defined as a sum; otherwise if
 
104
               more than 32 bits are present, the object becomes an
 
105
               OCTET STRING, with the bits numbered from left-to-right,
 
106
               in which the least significant bits of the last octet may
 
107
               be "reserved for future use".
 
108
 
 
109
SNMPv2 and beyond uses BITS (RFC 3417, 8.1):
 
110
 
 
111
   (3)   When encoding an object whose syntax is described using the
 
112
         BITS construct, the value is encoded as an OCTET STRING, in
 
113
         which all the named bits in (the definition of) the bitstring,
 
114
         commencing with the first bit and proceeding to the last bit,
 
115
         are placed in bits 8 (high order bit) to 1 (low order bit) of
 
116
         the first octet, followed by bits 8 to 1 of each subsequent
 
117
         octet in turn, followed by as many bits as are needed of the
 
118
         final subsequent octet, commencing with bit 8.  Remaining bits,
 
119
         if any, of the final octet are set to zero on generation and
 
120
         ignored on receipt.
 
121
 </pre>
 
122
 
 
123
<a name="embedded"></a> <h2>embedded perl</h2>
 
124
<pre> Add the following line to snmpd.conf:
 
125
 
 
126
   perl do "/path/to/perl_module.pl"
 
127
 
 
128
 
 
129
To test:
 
130
 
 
131
1) Try staring up snmpd, like so: 'snmpd -Dperl'. Check your log files for:
 
132
 
 
133
  perl: initializing perl (/tmp/snmp_perl.pl)
 
134
  starting perl_module.pl
 
135
  perl_module.pl loaded ok
 
136
  registering at netSnmp.999
 
137
 
 
138
If you get:
 
139
 
 
140
  perl: initializing perl (/usr/local/share/snmp/snmp_perl.pl)
 
141
  Can't open perl script "/usr/local/share/snmp/snmp_perl.pl": No such file or directory
 
142
  embedded perl support failed to initalize
 
143
 
 
144
Then you need to locate snmp_perl.pl, and put it in the correct path, OR put
 
145
the path in your snmpd.conf:
 
146
 
 
147
        perlInitFile /tmp/snmp_perl.pl
 
148
 
 
149
 
 
150
2) Once it's loaded ok, try a walk:
 
151
 
 
152
        snmpwalk -v2c -c public localhost netSnmp.999
 
153
 
 
154
You should see something like this in your logs:
 
155
 
 
156
 refs: NetSNMP::agent::netsnmp_mib_handler, NetSNMP::agent::reginfo, NetSNMP::agent::netsnmp_agent_request_info, NetSNMP::agent::netsnmp_request_infoPtr
 
157
processing a request of type 161
 
158
   processing request of nsTransactionEntry.3
 
159
    .1.3.6.1.4.1.8072.999.1.2.1 -> hello world
 
160
   finished processing
 
161
 
 
162
3) If not, maybe check /path/to/perl_module.pl and make sure it is executable.
 
163
 
 
164
Hope that helps.
 
165
 
 
166
 </pre>
 
167
 
 
168
<a name="smux"></a> <h2>SMUX</h2>
 
169
<pre> To turn off SMUX when you don't have the options of recompiling from source
 
170
to disable SMUX support, you have to give it an invalid IP address to bind
 
171
to. This may be OS specific. On Linux, if I put this in my snmpd.conf:
 
172
 
 
173
        smuxsocket 1.0.0.0
 
174
 
 
175
I get an error at startup, and lsof or netstat show that snmpd is no longer
 
176
listenting on port 199. If you get and error message about the smuxsocket
 
177
token not being recongnized, then you're out of luck. You'll have to recompile
 
178
from source (or just use local firewall rules to block connections to port
 
179
199).
 
180
 </pre>
 
181
 
 
182
<a name="entid"></a> <h2>Enterprise OID</h2>
 
183
<pre> From: Dave Shield, RObert Story
 
184
 
 
185
Recent Versions (5.x)
 
186
---------------------
 
187
If you want to *just* change the sysObjectID numbering,
 
188
(and leave the notifications using the Net-SNMP enterprise OID)
 
189
then use  --with-enterprise-sysoid
 
190
Or you could just use the snmpd.conf directive 'sysobjectid'
 
191
to set this at run time.
 
192
 
 
193
 
 
194
If you want to *just* change enterprise-specific notification OID
 
195
(and leave the sysObjectID using the Net-SNMP values)
 
196
then use  --with-enterprise-notification-oid
 
197
 
 
198
 
 
199
If you want to change *both* of these,
 
200
then use --with-enterprise-oid
 
201
 
 
202
Older Versions (4.2.x)
 
203
----------------------
 
204
In older version, you have to manuall update the version_id in
 
205
agent/agent_trap.c:80
 
206
 
 
207
   oid version_id[]    = { EXTENSIBLEMIB, AGENTID, OSTYPE };
 
208
 
 
209
 </pre>
 
210
 
 
211
<a name="autodeps"></a> <h2>Automatic dependencies</h2>
 
212
<pre> For auto-dependencies, add the following to your Makefile:
 
213
 
 
214
#
 
215
# Build rules
 
216
#
 
217
%.d : %.c
 
218
        @echo "Generating makefile $@ ..."
 
219
        @set -e; $(CC) -M $(COPTS) $(CFLAGS) $(CPPFLAGS) $< \
 
220
        | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
 
221
        [ -s $@ ] || $(RM) $(RMFLAGS) $@
 
222
 
 
223
include $(SOURCES:.c=.d)
 
224
 
 
225
 </pre>
 
226
 
 
227
<a name="cross"></a> <h2>Cross compiling</h2>
 
228
<pre> From the net-snmp INSTALL file:
 
229
 
 
230
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
231
 
 
232
Specifying the System Type
 
233
==========================
 
234
 
 
235
   There may be some features `configure' can not figure out
 
236
automatically, but needs to determine by the type of host the package
 
237
will run on.  Usually `configure' can figure that out, but if it prints
 
238
a message saying it can not guess the host type, give it the
 
239
`--host=TYPE' option.  TYPE can either be a short name for the system
 
240
type, such as `sun4', or a canonical name with three fields:
 
241
     CPU-COMPANY-SYSTEM
 
242
 
 
243
See the file `config.sub' for the possible values of each field.  If
 
244
`config.sub' isn't included in this package, then this package doesn't
 
245
need to know the host type.
 
246
 
 
247
   If you are building compiler tools for cross-compiling, you can also
 
248
use the `--target=TYPE' option to select the type of system they will
 
249
produce code for and the `--build=TYPE' option to select the type of
 
250
system on which you are compiling the package.
 
251
 
 
252
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
253
 
 
254
The most important configure options are:
 
255
 
 
256
        --with-cc=[cross-compiler]
 
257
        --with-ld=[cross-linker]
 
258
        --target=[target-environment]
 
259
        --with-endianness=[big|little]
 
260
 
 
261
Other potentially useful options:
 
262
 
 
263
        --with-cflags="..."
 
264
        --with-ldlags="..."
 
265
        --with-ar=/path/ar
 
266
 
 
267
        --enable-mini-agent
 
268
        --enable-shared="no"
 
269
        --without-pic
 
270
 
 
271
Two simple examples of cross-compiling:
 
272
 
 
273
./configure --target=ppc-linux --with-cc=ppc_405-gcc --with-endianness=big
 
274
 
 
275
./configure --target=powerpc-snmc-linux-gnu --build=i386-redhat-linux \
 
276
        --with-endianness=big
 
277
 
 
278
A more complex example involves setting environment variables for all
 
279
the flags for the tools needed for the cross compile:
 
280
 
 
281
   export TOOLPATH=/opt/hardhat/devkit/ppc/405
 
282
   export PATH=$TOOLPATH/bin:$PATH
 
283
   export CFLAGS=' -g -fPIC -msoft-float -D_SOFT_FLOAT -Dlinux -mcpu=403'
 
284
   export CPPFLAGS='-I$TOOLPATH/include -I$TOOLPATH/target/usr/include'
 
285
   export ASFLAGS='-g -gstabs'
 
286
   export LDFLAGS='-Wl,-soname,-Bdynamic -lc' 
 
287
   export LIB='ar rcu' 
 
288
 
 
289
   ./configure --build=i686-pc-linux-gnu  --host=powerpc \
 
290
           --target=powerpc-hardhat-linux-gnu --with-endianness=big
 
291
 
 
292
 
 
293
 
 
294
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
295
 
 
296
The mibgroup section is the most OS specific part of the agent. It's likely
 
297
that you will have to remove some of them. You just need to figure out which
 
298
ones to remove. 
 
299
 
 
300
For example, agent/mibgroup/mibII/tcpTable.c is a common module that doesn't
 
301
work on new platforms. So if it isn't working, omit it during configure, like
 
302
so:
 
303
 
 
304
        ./configure --with-out-mib-modules=mibII/tcpTable
 
305
 
 
306
 
 
307
Alternatively, you could work the other way. Start with a minimal
 
308
configuration:
 
309
 
 
310
        ./configure --enable-mini-agent
 
311
 
 
312
and then start adding MIB modules one-by-one:
 
313
 
 
314
        ./configure --enable-mini-agent
 
315
                    --with-mib-modules=mibII/system_mib,mibII/sysORTable
 
316
 
 
317
 
 
318
 </pre>
 
319
 
 
320
<a name="static"></a> <h2>Static linking</h2>
 
321
<pre> mXaureliu: I want to compile the 5.1 snmptrapd binary with statically linked libraries.. Can anyone help me with this? Is it just a simple configure switch
 
322
rstory: mXaureliu: you want static snmp libraries, or totally static (system libraries too)?
 
323
mXaureliu: totally static.. everything in one executable
 
324
mXaureliu: actually, how do i do both ways?
 
325
rstory: for snmp libs, try 'configure --enable-shared=no'.. that won't build the shared libraries
 
326
rstory: (though if you have previous versions of net-snmp libraries installed, the linker might pick those up and try and use them)
 
327
rstory: for totally static, you'll have to tweak the Makefile
 
328
rstory: add -Bstatic to LDFLAGS
 
329
 
 
330
[note: actually, for totally static, 'configure --with-ldflags=-Bstatic']
 
331
 </pre>
 
332
 
 
333
<a name="readfds"></a> <h2>readfds</h2>
 
334
<pre> > can you please tell me the meaning of the third argument. obviously the 
 
335
> first parameter to register_readfd is a file descriptor and second is the 
 
336
> callback function.
 
337
 
 
338
Correct.
 
339
The third parameter is arbitrary data that you can specify when you
 
340
register the file descriptor, and will then be passed to the callback
 
341
function when it's invoked.
 
342
 
 
343
 
 
344
So if you were listening on two separate sockets, for very similar
 
345
types of data, then you could use the same callback for both and
 
346
use this third parameter to distinguish between them:
 
347
 
 
348
 
 
349
        fd1 = open( "/proc/tweedledum" );
 
350
        fd2 = open( "/proc/tweedledee" );
 
351
 
 
352
        register_readfd( fd1, who_broke_the_rattle(), "tweedledee" );
 
353
        register_readfd( fd2, who_broke_the_rattle(), "tweedledum" );
 
354
 
 
355
 
 
356
void
 
357
who_broke_the_rattle( int fd, void *data )
 
358
{
 
359
    char *he_did = (char *)data;
 
360
 
 
361
    printf("%s broke the rattle!\n", he_did );
 
362
}
 
363
 
 
364
 </pre>
 
365
 
 
366
<a name="sharing"></a> <h2>sharing data</h2>
 
367
<pre> If two modules are compiled into the same agent/subagent, then just use a
 
368
normal C global var. No need to involve net-snmp in the process.
 
369
 
 
370
if they are different sub-agents, you are better off using tradition IPC
 
371
mechanisms. there is no net-snmp api for sharing data between subagents.
 
372
 
 
373
That said, *IF* you only need the data during processing of GET requests, or
 
374
when you aren't processing a request at all, you send a snmp request to the
 
375
master, which will query the other subagent. If you are processing a GET
 
376
request and are compiled into the master, you will have to delegate the
 
377
current request).
 
378
 
 
379
It's a little inefficient, compared to direct communication w/the other
 
380
subagent and it *will not* work during set processing.
 
381
 </pre>
 
382
 
 
383
<a name="tokens"></a> <h2>Debug Tokens</h2>
 
384
<pre> Some of the more common ones are:
 
385
 
 
386
   Agent: agent, agentx, dlmod, handler, helper, snmpd, trap, table
 
387
   MIBs: init_mib, mib_init, parse-file, parse-mibs
 
388
   Apps: read_config
 
389
 
 
390
Add them to your snmp.conf like so:
 
391
 
 
392
   # optionally turn on time stamps
 
393
   logTimestamp true
 
394
   doDebugging 1
 
395
   debugTokens agentx/config
 
396
 
 
397
If you put them in a different conf file, like snmpd.conf or myapp.conf,
 
398
prefix each with '[snmp]', like so:
 
399
 
 
400
   [snmp] doDebugging 1
 
401
 
 
402
 
 
403
This list was generated by running the following command in the main CVS branch:
 
404
 
 
405
find . -name \"*.c\" -print | xargs grep DEBUGMSGT | grep \" | cut -f 2 -d\" | sort -u
 
406
 
 
407
add
 
408
agent_handler
 
409
agent_registry
 
410
agent_set
 
411
agentx
 
412
agentx_build
 
413
agentx_build_varbind
 
414
agentx/config
 
415
agentx/config/retries
 
416
agentx/config/timeout
 
417
agentx/master
 
418
agentx/subagent
 
419
agentx/subgaent
 
420
asn_realloc
 
421
auto_nlist
 
422
build_oid_noalloc
 
423
build_oid_segment
 
424
callback
 
425
callback_clear
 
426
check_getnext_results
 
427
clear_nsap_list
 
428
compare:index
 
429
comparex
 
430
container
 
431
container_iterator
 
432
container_iterator:results
 
433
container:null:
 
434
container:null:find
 
435
container:null:find_next
 
436
container:null:for_each
 
437
container:null:free
 
438
container:null:get_null
 
439
container:null:get_null_factory
 
440
container:null:get_null_noalloc
 
441
container:null:insert
 
442
container:null:remove
 
443
container:null:size
 
444
container_registry
 
445
daemonize
 
446
deinit_usm_post_config
 
447
delayed_instance
 
448
dlmod
 
449
dump_etimelist
 
450
encode_keychange
 
451
example
 
452
example_data_set
 
453
example_notification
 
454
example_scalar_int
 
455
fixup_mib_directory
 
456
generate_Ku
 
457
generate_kul
 
458
get_mib_directory
 
459
handler:calling
 
460
handler:inject
 
461
handler::register
 
462
handler_registry
 
463
handler:returned
 
464
header_complex
 
465
header_complex_add_data
 
466
header_complex_dump
 
467
header_complex_extract_entry
 
468
header_complex_generate_oid
 
469
header_complex_generate_varoid
 
470
header_complex_parse_oid
 
471
header_complex_test
 
472
helper:baby_steps
 
473
helper:cache_handler
 
474
helper:debug
 
475
helper:instance
 
476
helper:mfd
 
477
helper:null
 
478
helper:read_only
 
479
helper:row_merge
 
480
helper:scalar
 
481
helper:scalar_group
 
482
helper:serialize
 
483
helper:stash_cache
 
484
helper:table
 
485
helper:watcher
 
486
helper:watcher:spinlock
 
487
helper:watcher:timestamp
 
488
host/hr_device
 
489
host/hr_disk
 
490
host/hr_filesys
 
491
host/hr_inst
 
492
host/hr_network
 
493
host/hr_partition
 
494
host/hr_print
 
495
host/hr_proc
 
496
host/hr_storage
 
497
host/hr_swinst
 
498
host/hr_swrun
 
499
host/hr_swrun::GetNextHR_SWRun
 
500
host/hr_system
 
501
hr_proc
 
502
initialize_table_ipCidrRouteTable
 
503
initialize_table_mteEventNotificationTable
 
504
initialize_table_mteEventTable
 
505
initialize_table_netSnmpHostsTable
 
506
initialize_table_nlmLogTable
 
507
initialize_table_nlmLogVariableTable
 
508
initialize_table_nsModuleTable
 
509
initialize_table_nsTransactionTable
 
510
init_mib
 
511
init_usm
 
512
injectHandler
 
513
kernel_sunos5
 
514
ksm
 
515
lcd_get_enginetime
 
516
lcd_get_enginetime_ex
 
517
lcd_set_enginetime
 
518
log_notification
 
519
md5
 
520
mfd
 
521
mibII/at
 
522
mibII/icmp
 
523
mibII/interfaces
 
524
mibII/ip
 
525
mibII/ipv6
 
526
mibII/mta_sendmail.c:mta_sendmail_parse_config
 
527
mibII/mta_sendmail.c:open_sendmailst
 
528
mibII/mta_sendmail.c:read_sendmailcf
 
529
mibII/snmp_mib
 
530
mibII/sysORTable
 
531
mibII/tcpScalar
 
532
mibII/tcpTable
 
533
mibII/udpScalar
 
534
mibII/udpTable
 
535
mibII/vacm_vars
 
536
mibII/var_route
 
537
mib_init
 
538
mte_disco
 
539
mteEventTable:send_events
 
540
mteObjectsTable
 
541
mteTriggerBooleanTable
 
542
mteTriggerDeltaTable
 
543
mteTriggerExistenceTable
 
544
mteTriggertable
 
545
mteTriggerTable
 
546
mteTriggerTest
 
547
mteTriggerTest:send_mte_trap
 
548
mteTriggerThresholdTable
 
549
netsnmp_aal5pvc
 
550
netsnmp_agent_check_packet
 
551
netsnmp_deregister_agent_nsap
 
552
netsnmp_ds_handle_config
 
553
netsnmp_ds_set_boolean
 
554
netsnmp_ds_set_int
 
555
netsnmp_ds_set_string
 
556
netsnmp_ds_set_void
 
557
netsnmp_ds_toggle_boolean
 
558
netsnmp_instance_counter32_handler
 
559
netsnmp_instance_int_handler
 
560
netsnmp_instance_long_handler
 
561
netsnmp_instance_ulong_handler
 
562
netsnmp_ipx
 
563
netsnmp_register_agent_nsap
 
564
netsnmp_register_mib_table_row
 
565
netsnmp_sockaddr_in
 
566
netsnmp_sockaddr_in6
 
567
netsnmp_sockaddr_ipx
 
568
netsnmp_table_data_set
 
569
netsnmp_tcp
 
570
netsnmp_tcp6
 
571
netsnmp_udp
 
572
netsnmp_udp6
 
573
netsnmp_udp6_getSecName
 
574
netsnmp_udp6_parse_security
 
575
netsnmp_udp_getSecName
 
576
netsnmp_udp_parse_security
 
577
netsnmp_unix
 
578
netsnmp_unix_getSecName
 
579
netsnmp_unix_parse_security
 
580
netsnmp_unix_transport
 
581
netstat:if
 
582
notification_log
 
583
nsCacheScalars
 
584
nsDebugScalars
 
585
object_monitor
 
586
old_api
 
587
output
 
588
override
 
589
parse-file
 
590
parse-mibs
 
591
parse_oid
 
592
parse_oid_indexes
 
593
perl
 
594
proc
 
595
proxy
 
596
proxy_args
 
597
proxy_config
 
598
proxy_init
 
599
read_config
 
600
read_config_copy_word
 
601
read_config_files
 
602
read_config:forward
 
603
read_config:initmib
 
604
read_config_read_data
 
605
read_config_read_memory
 
606
read_config_read_objid
 
607
read_config_read_octet_string
 
608
read_config_store_data_prefix
 
609
read_config:traphandle
 
610
register_exceptfd
 
611
register_index
 
612
register_mib
 
613
register_readfd
 
614
register_signal
 
615
register_writefd
 
616
report
 
617
results
 
618
scalar_int
 
619
scapi
 
620
scopedPDU_parse
 
621
send_notifications
 
622
sess_async_send
 
623
_sess_open
 
624
sess_process_packet
 
625
sess_read
 
626
sess_resend
 
627
sess_select
 
628
setting auth type: \
 
629
signal
 
630
smux
 
631
smux_conf
 
632
smux_init
 
633
smux/snmp_bgp
 
634
smux/snmp_ospf
 
635
smux/snmp_rip2
 
636
snmp_agent
 
637
snmp_alarm
 
638
snmp_api
 
639
snmp_build
 
640
snmp_clean_persistent
 
641
snmp_config
 
642
snmpd
 
643
snmpd/main
 
644
snmpd_ports
 
645
snmpd_register_app_config_handler
 
646
snmpd/select
 
647
snmpEngine
 
648
snmpNotifyFilterProfileTable
 
649
snmpNotifyFilterTable
 
650
snmpNotifyTable
 
651
snmp_parse
 
652
snmp_parse_args
 
653
snmp_parse_oid
 
654
snmp_pdu_realloc_rbuild
 
655
snmp_save_persistent
 
656
snmp_send
 
657
snmp_sess_add
 
658
snmp_sess_close
 
659
snmp_sess_open
 
660
snmpSetSerialNo
 
661
snmp_store
 
662
snmpTargetAddrEntry
 
663
snmpTargetParamsEntry
 
664
snmptrapd
 
665
snmpv3
 
666
snmpv3_parse
 
667
sprint_by_type
 
668
stash_cache
 
669
subtree
 
670
table_array
 
671
table_array:get
 
672
table_array:group
 
673
table_data_add_data
 
674
table_iterator
 
675
table_set_add_row
 
676
take_snapshot
 
677
target_counters
 
678
target_sessions
 
679
tdomain
 
680
testhandler
 
681
testhandler_table
 
682
transport_callback
 
683
trap
 
684
trapsess
 
685
tunnel
 
686
ucdDemoPublic
 
687
ucd-snmp/disk
 
688
ucd-snmp/disk:
 
689
ucd-snmp/memory
 
690
ucd-snmp/pass
 
691
ucd-snmp/pass_persist
 
692
ucd-snmp/proc
 
693
ucd-snmp/versioninfo
 
694
ucd-snmp/vmstat_aix4.c:update_stats
 
695
ucd-snmp/vmstat_dynix.c:update_stats
 
696
ucd-snmp/vmstat_hpux.c:update_stats
 
697
ucd-snmp/vmstat_solaris2.c:update_stats
 
698
unlink_tree
 
699
unload-mib
 
700
unregister_exceptfd
 
701
unregister_readfd
 
702
unregister_signal
 
703
unregister_writefd
 
704
usm
 
705
usmUser
 
706
util_funcs
 
707
vacm:checkSubtree
 
708
vacm:getView
 
709
versioninfo
 
710
vmstat
 
711
yyyinjectHandler
 
712
 </pre>
 
713
 
 
714
<a name="steps"></a> <h2>Baby Steps Flow</h2>
 
715
<pre>     /**
 
716
     * Baby Steps Flow diagram (rev 2003.09.29.1330)
 
717
     *
 
718
     * Legend: (test) [optional] &lt;required>
 
719
     *
 
720
     * OLD              NEW
 
721
     * ========  ============================================
 
722
     * +++           [pre_request]
 
723
     *                    |
 
724
     *               (row exists?) N ->(row_creation) N >-->+
 
725
     *                    |                   | Y           |
 
726
     *                    |&lt;------------------+             |
 
727
     *                   \|/                               \|/
 
728
     * RESERVE1  &lt;object_syntax_checks>                     |
 
729
     *                    |                                 | 
 
730
     *                  (err?)  Y >------------------------>+
 
731
     *                    |                                 |
 
732
     *                   \|/                               \|/
 
733
     * +++          (row existed?) N --->[row_creation]     |
 
734
     *                    |                   |             |
 
735
     *                    |&lt;--------------N (err?)          |
 
736
     *                    |                   | Y           |
 
737
     *                    |                   |             |
 
738
     *                    |       [row_creation_cleanup]--->+
 
739
     *                   \|/                                |
 
740
     * RESERVER2     [undo_setup]                           |
 
741
     *                    |                                 |
 
742
     *                  (err?)  Y --->-------->--------->+  |
 
743
     *                    |                              | \|/
 
744
     * ACTION        &lt;set_values>                        |  |
 
745
     *                    |                              |  |
 
746
     *                  (err?)  Y >---------+           \|/ |
 
747
     *                    |                 |            |  |
 
748
     * +++        [consistency_checks]      |            |  |
 
749
     *                    |                \|/           |  |
 
750
     * UNDO             (err?)  Y >-------[undo]-------->+  |
 
751
     *                    |                              |  |
 
752
     *            [reversible_commit]                    |  |
 
753
     * +++                |                              | \|/
 
754
     *                  (err?)  Y >--[reverse_commit]    |  |
 
755
     *                    |              |               |  |
 
756
     * COMMIT        &lt;final_commit>      |               |  |
 
757
     *                    |              |               |  |
 
758
     *                  (err?)  Y >--[log msg]           |  |
 
759
     *                    |              |               |  |
 
760
     *                    |             \|/             \|/ |
 
761
     *                    | &lt;-----------&lt;+---&lt;-----------+  |
 
762
     *                   \|/                                |
 
763
     * FREE          [undo_cleanup]                         |
 
764
     *                    |                                \|/
 
765
     *                    |&lt;--------------&lt;-----------------+
 
766
     *                   \|/
 
767
     *               [post_request]
 
768
     */
 
769
 </pre>
 
770
 
 
771
<hr>
 
772
<table width="100%">
 
773
<tr><td align=left>
 
774
<br>Page
 
775
<!-- Created: Thu Jul 24 10:08:26 MET DST 1997 -->
 
776
<!-- hhmts start -->
 
777
Last modified: Wed Mar 12 13:49:32 PST 2003
 
778
<!-- hhmts end -->
 
779
</td><td align=right>
 
780
<br>Powered by:
 
781
<A href="http://sourceforge.net">
 
782
      <IMG src="http://sourceforge.net/sflogo.php?group_id=12694&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></A>
 
783
 
 
784
</td></tr></table>
 
785
  </body>
 
786
</html>