1e4e21ee1SDavid van Moolenbroek /* MIB service - minix.c - implementation of the CTL_MINIX subtree */
2e4e21ee1SDavid van Moolenbroek
3e4e21ee1SDavid van Moolenbroek #include "mib.h"
4e4e21ee1SDavid van Moolenbroek
5e4e21ee1SDavid van Moolenbroek #if MINIX_TEST_SUBTREE
6e4e21ee1SDavid van Moolenbroek
7e4e21ee1SDavid van Moolenbroek static char test_string[16], test_struct[12];
8e4e21ee1SDavid van Moolenbroek
9e4e21ee1SDavid van Moolenbroek static struct mib_node mib_minix_test_secret_table[] = {
10e4e21ee1SDavid van Moolenbroek /* 0*/ [SECRET_VALUE] = MIB_INT(_RO, 12345, "value",
11e4e21ee1SDavid van Moolenbroek "The combination to my luggage"),
12e4e21ee1SDavid van Moolenbroek };
13e4e21ee1SDavid van Moolenbroek
14e4e21ee1SDavid van Moolenbroek /*
15e4e21ee1SDavid van Moolenbroek * Note that even the descriptions here have been chosen such that returned
16e4e21ee1SDavid van Moolenbroek * description array alignment is tested. Do not change existing fields
17e4e21ee1SDavid van Moolenbroek * lightly, although adding new fields is always fine.
18e4e21ee1SDavid van Moolenbroek */
19e4e21ee1SDavid van Moolenbroek static struct mib_node mib_minix_test_table[] = {
20e4e21ee1SDavid van Moolenbroek /* 0*/ [TEST_INT] = MIB_INT(_RO | CTLFLAG_HEX, 0x01020304, "int",
21e4e21ee1SDavid van Moolenbroek "Value test field"),
22e4e21ee1SDavid van Moolenbroek /* 1*/ [TEST_BOOL] = MIB_BOOL(_RW, 0, "bool",
23e4e21ee1SDavid van Moolenbroek "Boolean test field"),
24e4e21ee1SDavid van Moolenbroek /* 2*/ [TEST_QUAD] = MIB_QUAD(_RW, 0, "quad", "Quad test field"),
25e4e21ee1SDavid van Moolenbroek /* 3*/ [TEST_STRING] = MIB_STRING(_RW, test_string, "string",
26e4e21ee1SDavid van Moolenbroek "String test field"),
276f3e0bcdSDavid van Moolenbroek /* 4*/ [TEST_STRUCT] = MIB_STRUCT(_RW, sizeof(test_struct),
286f3e0bcdSDavid van Moolenbroek test_struct, "struct",
29e4e21ee1SDavid van Moolenbroek "Structure test field"),
30e4e21ee1SDavid van Moolenbroek /* 5*/ [TEST_PRIVATE] = MIB_INT(_RW | CTLFLAG_PRIVATE, -5375,
31e4e21ee1SDavid van Moolenbroek "private", "Private test field"),
32e4e21ee1SDavid van Moolenbroek /* 6*/ [TEST_ANYWRITE] = MIB_INT(_RW | CTLFLAG_ANYWRITE, 0,
33e4e21ee1SDavid van Moolenbroek "anywrite", "AnyWrite test field"),
34e4e21ee1SDavid van Moolenbroek /* 7*/ [TEST_DYNAMIC] = MIB_INT(_RO, 0, "deleteme",
35e4e21ee1SDavid van Moolenbroek "This node will be destroyed"),
36e4e21ee1SDavid van Moolenbroek /* 8*/ [TEST_SECRET] = MIB_NODE(_RO | CTLFLAG_PRIVATE,
37e4e21ee1SDavid van Moolenbroek mib_minix_test_secret_table, "secret",
38e4e21ee1SDavid van Moolenbroek "Private subtree"),
39e4e21ee1SDavid van Moolenbroek /* 9*/ [TEST_PERM] = MIB_INT(_P | _RO, 1, "permanent", NULL),
40e4e21ee1SDavid van Moolenbroek /*10*/ [TEST_DESTROY1] = MIB_INT(_RO, 123, "destroy1", NULL),
41e4e21ee1SDavid van Moolenbroek /*11*/ [TEST_DESTROY2] = MIB_INT(_RO, 456, "destroy2",
42e4e21ee1SDavid van Moolenbroek "This node will be destroyed"),
43e4e21ee1SDavid van Moolenbroek };
44e4e21ee1SDavid van Moolenbroek
45e4e21ee1SDavid van Moolenbroek #endif /* MINIX_TEST_SUBTREE */
46e4e21ee1SDavid van Moolenbroek
47e4e21ee1SDavid van Moolenbroek static struct mib_node mib_minix_mib_table[] = {
48e4e21ee1SDavid van Moolenbroek /* 1*/ [MIB_NODES] = MIB_INTPTR(_P | _RO | CTLFLAG_UNSIGNED,
496f3e0bcdSDavid van Moolenbroek &mib_nodes, "nodes",
50e4e21ee1SDavid van Moolenbroek "Number of nodes in the MIB tree"),
51e4e21ee1SDavid van Moolenbroek /* 2*/ [MIB_OBJECTS] = MIB_INTPTR(_P | _RO | CTLFLAG_UNSIGNED,
526f3e0bcdSDavid van Moolenbroek &mib_objects, "objects", "Number of "
53e4e21ee1SDavid van Moolenbroek "dynamically allocated MIB objects"),
546f3e0bcdSDavid van Moolenbroek /* 3*/ [MIB_REMOTES] = MIB_INTPTR(_P | _RO | CTLFLAG_UNSIGNED,
556f3e0bcdSDavid van Moolenbroek &mib_remotes, "remotes",
566f3e0bcdSDavid van Moolenbroek "Number of mounted remote MIB subtrees"),
57e4e21ee1SDavid van Moolenbroek };
58e4e21ee1SDavid van Moolenbroek
59305e366fSDavid van Moolenbroek static struct mib_node mib_minix_proc_table[] = {
60305e366fSDavid van Moolenbroek /* 1*/ [PROC_LIST] = MIB_FUNC(_P | _RO | CTLTYPE_STRUCT, 0,
61305e366fSDavid van Moolenbroek mib_minix_proc_list, "list",
62305e366fSDavid van Moolenbroek "Process list"),
63305e366fSDavid van Moolenbroek /* 2*/ [PROC_DATA] = MIB_FUNC(_P | _RO | CTLTYPE_NODE, 0,
64305e366fSDavid van Moolenbroek mib_minix_proc_data, "data",
65305e366fSDavid van Moolenbroek "Process data"),
66305e366fSDavid van Moolenbroek };
67305e366fSDavid van Moolenbroek
68e4e21ee1SDavid van Moolenbroek static struct mib_node mib_minix_table[] = {
69e4e21ee1SDavid van Moolenbroek #if MINIX_TEST_SUBTREE
706f3e0bcdSDavid van Moolenbroek /* 0*/ [MINIX_TEST] = MIB_NODE(_P | _RW | CTLFLAG_HIDDEN,
71e4e21ee1SDavid van Moolenbroek mib_minix_test_table, "test",
72e4e21ee1SDavid van Moolenbroek "Test87 testing ground"),
73e4e21ee1SDavid van Moolenbroek #endif /* MINIX_TEST_SUBTREE */
74e4e21ee1SDavid van Moolenbroek /* 1*/ [MINIX_MIB] = MIB_NODE(_P | _RO, mib_minix_mib_table,
75e4e21ee1SDavid van Moolenbroek "mib", "MIB service information"),
76305e366fSDavid van Moolenbroek /* 2*/ [MINIX_PROC] = MIB_NODE(_P | _RO, mib_minix_proc_table,
77305e366fSDavid van Moolenbroek "proc", "Process information for ProcFS"),
78*ef8d499eSDavid van Moolenbroek /* 3*/ /* MINIX_LWIP is mounted through RMIB and thus not present here. */
79e4e21ee1SDavid van Moolenbroek };
80e4e21ee1SDavid van Moolenbroek
81e4e21ee1SDavid van Moolenbroek /*
82e4e21ee1SDavid van Moolenbroek * Initialize the CTL_MINIX subtree.
83e4e21ee1SDavid van Moolenbroek */
84e4e21ee1SDavid van Moolenbroek void
mib_minix_init(struct mib_node * node)85e4e21ee1SDavid van Moolenbroek mib_minix_init(struct mib_node * node)
86e4e21ee1SDavid van Moolenbroek {
87e4e21ee1SDavid van Moolenbroek
88e4e21ee1SDavid van Moolenbroek MIB_INIT_ENODE(node, mib_minix_table);
89e4e21ee1SDavid van Moolenbroek }
90