1 /*
2  * Note: this file originally auto-generated by mib2c using
3  *       version : 1.48 $ of : mfd-top.m2c,v $
4  *
5  * $Id$
6  */
7 /** \page MFD helper for ipAddressPrefixTable
8  *
9  * \section intro Introduction
10  * Introductory text.
11  *
12  */
13 /*
14  * standard Net-SNMP includes
15  */
16 #include <net-snmp/net-snmp-config.h>
17 #include <net-snmp/net-snmp-includes.h>
18 #include <net-snmp/agent/net-snmp-agent-includes.h>
19 
20 /*
21  * include our parent header
22  */
23 #include "ipAddressPrefixTable.h"
24 
25 #include <net-snmp/agent/mib_modules.h>
26 
27 #include "ipAddressPrefixTable_interface.h"
28 
29 const oid       ipAddressPrefixTable_oid[] = { IPADDRESSPREFIXTABLE_OID };
30 const int       ipAddressPrefixTable_oid_size =
31 OID_LENGTH(ipAddressPrefixTable_oid);
32 
33 ipAddressPrefixTable_registration ipAddressPrefixTable_user_context;
34 static ipAddressPrefixTable_registration *ipAddressPrefixTable_user_context_p;
35 
36 void            initialize_table_ipAddressPrefixTable(void);
37 void            shutdown_table_ipAddressPrefixTable(void);
38 
39 
40 /**
41  * Initializes the ipAddressPrefixTable module
42  */
43 void
init_ipAddressPrefixTable(void)44 init_ipAddressPrefixTable(void)
45 {
46     DEBUGMSGTL(("verbose:ipAddressPrefixTable:init_ipAddressPrefixTable",
47                 "called\n"));
48 
49     /*
50      * TODO:300:o: Perform ipAddressPrefixTable one-time module initialization.
51      */
52 
53     /*
54      * here we initialize all the tables we're planning on supporting
55      */
56     if (should_init("ipAddressPrefixTable"))
57         initialize_table_ipAddressPrefixTable();
58 
59 }                               /* init_ipAddressPrefixTable */
60 
61 /**
62  * Shut-down the ipAddressPrefixTable module (agent is exiting)
63  */
64 void
shutdown_ipAddressPrefixTable(void)65 shutdown_ipAddressPrefixTable(void)
66 {
67     if (should_init("ipAddressPrefixTable"))
68         shutdown_table_ipAddressPrefixTable();
69 
70 }
71 
72 /**
73  * Initialize the table ipAddressPrefixTable
74  *    (Define its contents and how it's structured)
75  */
76 void
initialize_table_ipAddressPrefixTable(void)77 initialize_table_ipAddressPrefixTable(void)
78 {
79     u_long          flags;
80 
81     DEBUGMSGTL(("verbose:ipAddressPrefixTable:initialize_table_ipAddressPrefixTable", "called\n"));
82 
83     /*
84      * TODO:301:o: Perform ipAddressPrefixTable one-time table initialization.
85      */
86 
87     /*
88      * TODO:302:o: |->Initialize ipAddressPrefixTable user context
89      * if you'd like to pass in a pointer to some data for this
90      * table, allocate or set it up here.
91      */
92     /*
93      * a netsnmp_data_list is a simple way to store void pointers. A simple
94      * string token is used to add, find or remove pointers.
95      */
96     ipAddressPrefixTable_user_context_p
97 	= netsnmp_create_data_list("ipAddressPrefixTable", NULL, NULL);
98 
99     /*
100      * No support for any flags yet, but in the future you would
101      * set any flags here.
102      */
103     flags = 0;
104 
105     /*
106      * call interface initialization code
107      */
108     _ipAddressPrefixTable_initialize_interface
109 	(ipAddressPrefixTable_user_context_p, flags);
110 }                               /* initialize_table_ipAddressPrefixTable */
111 
112 /**
113  * Shutdown the table ipAddressPrefixTable
114  */
115 void
shutdown_table_ipAddressPrefixTable(void)116 shutdown_table_ipAddressPrefixTable(void)
117 {
118     /*
119      * call interface shutdown code
120      */
121     _ipAddressPrefixTable_shutdown_interface
122         (ipAddressPrefixTable_user_context_p);
123     netsnmp_free_all_list_data(ipAddressPrefixTable_user_context_p);
124     ipAddressPrefixTable_user_context_p = NULL;
125 }
126 
127 /**
128  * extra context initialization (eg default values)
129  *
130  * @param rowreq_ctx    : row request context
131  * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
132  *
133  * @retval MFD_SUCCESS  : no errors
134  * @retval MFD_ERROR    : error (context allocate will fail)
135  */
136 int
ipAddressPrefixTable_rowreq_ctx_init(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,void * user_init_ctx)137 ipAddressPrefixTable_rowreq_ctx_init(ipAddressPrefixTable_rowreq_ctx *
138                                      rowreq_ctx, void *user_init_ctx)
139 {
140     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_rowreq_ctx_init", "called\n"));
141 
142     netsnmp_assert(NULL != rowreq_ctx);
143 
144     /*
145      * TODO:210:o: |-> Perform extra ipAddressPrefixTable rowreq initialization. (eg DEFVALS)
146      */
147 
148     return MFD_SUCCESS;
149 }                               /* ipAddressPrefixTable_rowreq_ctx_init */
150 
151 /**
152  * extra context cleanup
153  *
154  */
155 void
ipAddressPrefixTable_rowreq_ctx_cleanup(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx)156 ipAddressPrefixTable_rowreq_ctx_cleanup(ipAddressPrefixTable_rowreq_ctx *
157                                         rowreq_ctx)
158 {
159     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_rowreq_ctx_cleanup", "called\n"));
160 
161     netsnmp_assert(NULL != rowreq_ctx);
162 
163     /*
164      * TODO:211:o: |-> Perform extra ipAddressPrefixTable rowreq cleanup.
165      */
166 }                               /* ipAddressPrefixTable_rowreq_ctx_cleanup */
167 
168 /**
169  * pre-request callback
170  *
171  *
172  * @retval MFD_SUCCESS              : success.
173  * @retval MFD_ERROR                : other error
174  */
175 int
ipAddressPrefixTable_pre_request(ipAddressPrefixTable_registration * user_context)176 ipAddressPrefixTable_pre_request(ipAddressPrefixTable_registration *
177                                  user_context)
178 {
179     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_pre_request", "called\n"));
180 
181     /*
182      * TODO:510:o: Perform ipAddressPrefixTable pre-request actions.
183      */
184 
185     return MFD_SUCCESS;
186 }                               /* ipAddressPrefixTable_pre_request */
187 
188 /**
189  * post-request callback
190  *
191  * Note:
192  *   New rows have been inserted into the container, and
193  *   deleted rows have been removed from the container and
194  *   released.
195  *
196  * @param user_context
197  * @param rc : MFD_SUCCESS if all requests succeeded
198  *
199  * @retval MFD_SUCCESS : success.
200  * @retval MFD_ERROR   : other error (ignored)
201  */
202 int
ipAddressPrefixTable_post_request(ipAddressPrefixTable_registration * user_context,int rc)203 ipAddressPrefixTable_post_request(ipAddressPrefixTable_registration *
204                                   user_context, int rc)
205 {
206     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_post_request", "called\n"));
207 
208     /*
209      * TODO:511:o: Perform ipAddressPrefixTable post-request actions.
210      */
211 
212     return MFD_SUCCESS;
213 }                               /* ipAddressPrefixTable_post_request */
214 
215 
216 /**********************************************************************
217  **********************************************************************
218  ***
219  *** Table ipAddressPrefixTable
220  ***
221  **********************************************************************
222  **********************************************************************/
223 /*
224  * IP-MIB::ipAddressPrefixTable is subid 32 of ip.
225  * Its status is Current.
226  * OID: .1.3.6.1.2.1.4.32, length: 8
227  */
228 
229 /*
230  * ---------------------------------------------------------------------
231  * * TODO:200:r: Implement ipAddressPrefixTable data context functions.
232  */
233 
234 
235 /**
236  * set mib index(es)
237  *
238  * @param tbl_idx mib index structure
239  * @param ipAddressPrefixIfIndex_val
240  * @param ipAddressPrefixType_val
241  * @param ipAddressPrefixPrefix_val_ptr
242  * @param ipAddressPrefixPrefix_val_ptr_len
243  * @param ipAddressPrefixLength_val
244  *
245  * @retval MFD_SUCCESS     : success.
246  * @retval MFD_ERROR       : other error.
247  *
248  * @remark
249  *  This convenience function is useful for setting all the MIB index
250  *  components with a single function call. It is assume that the C values
251  *  have already been mapped from their native/rawformat to the MIB format.
252  */
253 int
ipAddressPrefixTable_indexes_set_tbl_idx(ipAddressPrefixTable_mib_index * tbl_idx,long ipAddressPrefixIfIndex_val,u_long ipAddressPrefixType_val,u_char * ipAddressPrefixPrefix_val_ptr,size_t ipAddressPrefixPrefix_val_ptr_len,u_long ipAddressPrefixLength_val)254 ipAddressPrefixTable_indexes_set_tbl_idx(ipAddressPrefixTable_mib_index *
255                                          tbl_idx,
256                                          long ipAddressPrefixIfIndex_val,
257                                          u_long ipAddressPrefixType_val,
258                                          u_char
259                                          *ipAddressPrefixPrefix_val_ptr,
260                                          size_t
261                                          ipAddressPrefixPrefix_val_ptr_len,
262                                          u_long ipAddressPrefixLength_val)
263 {
264     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_indexes_set_tbl_idx", "called\n"));
265 
266     /*
267      * ipAddressPrefixIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
268      */
269     tbl_idx->ipAddressPrefixIfIndex = ipAddressPrefixIfIndex_val;
270 
271     /*
272      * ipAddressPrefixType(2)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
273      */
274     tbl_idx->ipAddressPrefixType = ipAddressPrefixType_val;
275 
276     /*
277      * ipAddressPrefixPrefix(3)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h
278      */
279     tbl_idx->ipAddressPrefixPrefix_len = sizeof(tbl_idx->ipAddressPrefixPrefix) / sizeof(tbl_idx->ipAddressPrefixPrefix[0]);    /* max length */
280     /*
281      * make sure there is enough space for ipAddressPrefixPrefix data
282      */
283     if (tbl_idx->ipAddressPrefixPrefix_len <
284         ipAddressPrefixPrefix_val_ptr_len) {
285         snmp_log(LOG_ERR, "not enough space for value\n");
286         return MFD_ERROR;
287     }
288     tbl_idx->ipAddressPrefixPrefix_len = ipAddressPrefixPrefix_val_ptr_len;
289     memcpy(tbl_idx->ipAddressPrefixPrefix, ipAddressPrefixPrefix_val_ptr,
290            ipAddressPrefixPrefix_val_ptr_len *
291            sizeof(ipAddressPrefixPrefix_val_ptr[0]));
292 
293     /*
294      * ipAddressPrefixLength(4)/InetAddressPrefixLength/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H
295      */
296     tbl_idx->ipAddressPrefixLength = ipAddressPrefixLength_val;
297 
298 
299     return MFD_SUCCESS;
300 }                               /* ipAddressPrefixTable_indexes_set_tbl_idx */
301 
302 /**
303  * @internal
304  * set row context indexes
305  *
306  * @param reqreq_ctx the row context that needs updated indexes
307  *
308  * @retval MFD_SUCCESS     : success.
309  * @retval MFD_ERROR       : other error.
310  *
311  * @remark
312  *  This function sets the mib indexs, then updates the oid indexs
313  *  from the mib index.
314  */
315 int
ipAddressPrefixTable_indexes_set(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,long ipAddressPrefixIfIndex_val,u_long ipAddressPrefixType_val,u_char * ipAddressPrefixPrefix_val_ptr,size_t ipAddressPrefixPrefix_val_ptr_len,u_long ipAddressPrefixLength_val)316 ipAddressPrefixTable_indexes_set(ipAddressPrefixTable_rowreq_ctx *
317                                  rowreq_ctx,
318                                  long ipAddressPrefixIfIndex_val,
319                                  u_long ipAddressPrefixType_val,
320                                  u_char *ipAddressPrefixPrefix_val_ptr,
321                                  size_t ipAddressPrefixPrefix_val_ptr_len,
322                                  u_long ipAddressPrefixLength_val)
323 {
324     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixTable_indexes_set", "called\n"));
325 
326     if (MFD_SUCCESS !=
327         ipAddressPrefixTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
328                                                  ipAddressPrefixIfIndex_val,
329                                                  ipAddressPrefixType_val,
330                                                  ipAddressPrefixPrefix_val_ptr,
331                                                  ipAddressPrefixPrefix_val_ptr_len,
332                                                  ipAddressPrefixLength_val))
333         return MFD_ERROR;
334 
335     /*
336      * convert mib index to oid index
337      */
338     rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
339     if (0 != ipAddressPrefixTable_index_to_oid(&rowreq_ctx->oid_idx,
340                                                &rowreq_ctx->tbl_idx)) {
341         return MFD_ERROR;
342     }
343 
344     return MFD_SUCCESS;
345 }                               /* ipAddressPrefixTable_indexes_set */
346 
347 
348 /*---------------------------------------------------------------------
349  * IP-MIB::ipAddressPrefixEntry.ipAddressPrefixOrigin
350  * ipAddressPrefixOrigin is subid 5 of ipAddressPrefixEntry.
351  * Its status is Current, and its access level is ReadOnly.
352  * OID: .1.3.6.1.2.1.4.32.1.5
353  * Description:
354 The origin of this prefix.
355  *
356  * Attributes:
357  *   accessible 1     isscalar 0     enums  1      hasdefval 0
358  *   readable   1     iscolumn 1     ranges 0      hashint   0
359  *   settable   0
360  *
361  * Enum range: 4/8. Values:  other(1), manual(2), wellknown(3), dhcp(4), routeradv(5)
362  *
363  * Its syntax is IpAddressPrefixOriginTC (based on perltype INTEGER)
364  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
365  */
366 /**
367  * Extract the current value of the ipAddressPrefixOrigin data.
368  *
369  * Set a value using the data context for the row.
370  *
371  * @param rowreq_ctx
372  *        Pointer to the row request context.
373  * @param ipAddressPrefixOrigin_val_ptr
374  *        Pointer to storage for a long variable
375  *
376  * @retval MFD_SUCCESS         : success
377  * @retval MFD_SKIP            : skip this node (no value for now)
378  * @retval MFD_ERROR           : Any other error
379  */
380 int
ipAddressPrefixOrigin_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,u_long * ipAddressPrefixOrigin_val_ptr)381 ipAddressPrefixOrigin_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,
382                           u_long * ipAddressPrefixOrigin_val_ptr)
383 {
384    /** we should have a non-NULL pointer */
385     netsnmp_assert(NULL != ipAddressPrefixOrigin_val_ptr);
386 
387 
388     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixOrigin_get",
389                 "called\n"));
390 
391     netsnmp_assert(NULL != rowreq_ctx);
392 
393     /*
394      * TODO:231:o: |-> Extract the current value of the ipAddressPrefixOrigin data.
395      * copy (* ipAddressPrefixOrigin_val_ptr ) from rowreq_ctx->data
396      */
397           (*ipAddressPrefixOrigin_val_ptr) = rowreq_ctx->data.ipAddressPrefixOrigin;
398 
399            return MFD_SUCCESS;
400 }                               /* ipAddressPrefixOrigin_get */
401 
402 /*---------------------------------------------------------------------
403  * IP-MIB::ipAddressPrefixEntry.ipAddressPrefixOnLinkFlag
404  * ipAddressPrefixOnLinkFlag is subid 6 of ipAddressPrefixEntry.
405  * Its status is Current, and its access level is ReadOnly.
406  * OID: .1.3.6.1.2.1.4.32.1.6
407  * Description:
408 This object has the value 'true(1)', if this prefix can be
409             used  for on-link determination and the value 'false(2)'
410             otherwise.
411 
412 
413             The default for IPv4 prefixes is 'true(1)'.
414  *
415  * Attributes:
416  *   accessible 1     isscalar 0     enums  1      hasdefval 0
417  *   readable   1     iscolumn 1     ranges 0      hashint   0
418  *   settable   0
419  *
420  * Enum range: 2/8. Values:  true(1), false(2)
421  *
422  * Its syntax is TruthValue (based on perltype INTEGER)
423  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
424  */
425 /**
426  * Extract the current value of the ipAddressPrefixOnLinkFlag data.
427  *
428  * Set a value using the data context for the row.
429  *
430  * @param rowreq_ctx
431  *        Pointer to the row request context.
432  * @param ipAddressPrefixOnLinkFlag_val_ptr
433  *        Pointer to storage for a long variable
434  *
435  * @retval MFD_SUCCESS         : success
436  * @retval MFD_SKIP            : skip this node (no value for now)
437  * @retval MFD_ERROR           : Any other error
438  */
439 int
ipAddressPrefixOnLinkFlag_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,u_long * ipAddressPrefixOnLinkFlag_val_ptr)440 ipAddressPrefixOnLinkFlag_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,
441                               u_long * ipAddressPrefixOnLinkFlag_val_ptr)
442 {
443    /** we should have a non-NULL pointer */
444     netsnmp_assert(NULL != ipAddressPrefixOnLinkFlag_val_ptr);
445 
446 
447     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixOnLinkFlag_get", "called\n"));
448 
449     netsnmp_assert(NULL != rowreq_ctx);
450 
451     /*
452      * TODO:231:o: |-> Extract the current value of the ipAddressPrefixOnLinkFlag data.
453      * copy (* ipAddressPrefixOnLinkFlag_val_ptr ) from rowreq_ctx->data
454      */
455     if (INETADDRESSTYPE_IPV4 == rowreq_ctx->tbl_idx.ipAddressPrefixType) {
456         (*ipAddressPrefixOnLinkFlag_val_ptr) = 1;       /* per MIB */
457     } else
458         (*ipAddressPrefixOnLinkFlag_val_ptr) =
459             rowreq_ctx->data.ipAddressPrefixOnLinkFlag;
460 
461     return MFD_SUCCESS;
462 }                               /* ipAddressPrefixOnLinkFlag_get */
463 
464 /*---------------------------------------------------------------------
465  * IP-MIB::ipAddressPrefixEntry.ipAddressPrefixAutonomousFlag
466  * ipAddressPrefixAutonomousFlag is subid 7 of ipAddressPrefixEntry.
467  * Its status is Current, and its access level is ReadOnly.
468  * OID: .1.3.6.1.2.1.4.32.1.7
469  * Description:
470 Autonomous address configuration flag. When true(1),
471             indicates that this prefix can be used for autonomous
472             address configuration (i.e. can be used to form a local
473             interface address).  If false(2), it is not used to auto-
474             configure a local interface address.
475 
476 
477             The default for IPv4 prefixes is 'false(2)'.
478  *
479  * Attributes:
480  *   accessible 1     isscalar 0     enums  1      hasdefval 0
481  *   readable   1     iscolumn 1     ranges 0      hashint   0
482  *   settable   0
483  *
484  * Enum range: 2/8. Values:  true(1), false(2)
485  *
486  * Its syntax is TruthValue (based on perltype INTEGER)
487  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
488  */
489 /**
490  * Extract the current value of the ipAddressPrefixAutonomousFlag data.
491  *
492  * Set a value using the data context for the row.
493  *
494  * @param rowreq_ctx
495  *        Pointer to the row request context.
496  * @param ipAddressPrefixAutonomousFlag_val_ptr
497  *        Pointer to storage for a long variable
498  *
499  * @retval MFD_SUCCESS         : success
500  * @retval MFD_SKIP            : skip this node (no value for now)
501  * @retval MFD_ERROR           : Any other error
502  */
503 int
ipAddressPrefixAutonomousFlag_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,u_long * ipAddressPrefixAutonomousFlag_val_ptr)504 ipAddressPrefixAutonomousFlag_get(ipAddressPrefixTable_rowreq_ctx *
505                                   rowreq_ctx,
506                                   u_long *
507                                   ipAddressPrefixAutonomousFlag_val_ptr)
508 {
509    /** we should have a non-NULL pointer */
510     netsnmp_assert(NULL != ipAddressPrefixAutonomousFlag_val_ptr);
511 
512 
513     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixAutonomousFlag_get", "called\n"));
514 
515     netsnmp_assert(NULL != rowreq_ctx);
516 
517     /*
518      * TODO:231:o: |-> Extract the current value of the ipAddressPrefixAutonomousFlag data.
519      * copy (* ipAddressPrefixAutonomousFlag_val_ptr ) from rowreq_ctx->data
520      */
521     if (INETADDRESSTYPE_IPV4 == rowreq_ctx->tbl_idx.ipAddressPrefixType)
522         (*ipAddressPrefixAutonomousFlag_val_ptr) = 2;   /* per MIB */
523     else
524         (*ipAddressPrefixAutonomousFlag_val_ptr) =
525             rowreq_ctx->data.ipAddressPrefixAutonomousFlag;
526 
527     return MFD_SUCCESS;
528 }                               /* ipAddressPrefixAutonomousFlag_get */
529 
530 /*---------------------------------------------------------------------
531  * IP-MIB::ipAddressPrefixEntry.ipAddressPrefixAdvPreferredLifetime
532  * ipAddressPrefixAdvPreferredLifetime is subid 8 of ipAddressPrefixEntry.
533  * Its status is Current, and its access level is ReadOnly.
534  * OID: .1.3.6.1.2.1.4.32.1.8
535  * Description:
536 The remaining length of time in seconds that this prefix
537             will continue to be preferred, i.e. time until deprecation.
538 
539 
540 
541 
542             A value of 4,294,967,295 represents infinity.
543 
544 
545             The address generated from a deprecated prefix should no
546             longer be used as a source address in new communications,
547             but packets received on such an interface are processed as
548             expected.
549 
550 
551             The default for IPv4 prefixes is 4,294,967,295 (infinity).
552  *
553  * Attributes:
554  *   accessible 1     isscalar 0     enums  0      hasdefval 0
555  *   readable   1     iscolumn 1     ranges 0      hashint   0
556  *   settable   0
557  *
558  *
559  * Its syntax is UNSIGNED32 (based on perltype UNSIGNED32)
560  * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
561  */
562 /**
563  * Extract the current value of the ipAddressPrefixAdvPreferredLifetime data.
564  *
565  * Set a value using the data context for the row.
566  *
567  * @param rowreq_ctx
568  *        Pointer to the row request context.
569  * @param ipAddressPrefixAdvPreferredLifetime_val_ptr
570  *        Pointer to storage for a u_long variable
571  *
572  * @retval MFD_SUCCESS         : success
573  * @retval MFD_SKIP            : skip this node (no value for now)
574  * @retval MFD_ERROR           : Any other error
575  */
576 int
ipAddressPrefixAdvPreferredLifetime_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,u_long * ipAddressPrefixAdvPreferredLifetime_val_ptr)577 ipAddressPrefixAdvPreferredLifetime_get(ipAddressPrefixTable_rowreq_ctx *
578                                         rowreq_ctx,
579                                         u_long *
580                                         ipAddressPrefixAdvPreferredLifetime_val_ptr)
581 {
582    /** we should have a non-NULL pointer */
583     netsnmp_assert(NULL != ipAddressPrefixAdvPreferredLifetime_val_ptr);
584 
585 
586     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixAdvPreferredLifetime_get", "called\n"));
587 
588     netsnmp_assert(NULL != rowreq_ctx);
589 
590     /*
591      * TODO:231:o: |-> Extract the current value of the ipAddressPrefixAdvPreferredLifetime data.
592      * copy (* ipAddressPrefixAdvPreferredLifetime_val_ptr ) from rowreq_ctx->data
593      */
594     if (INETADDRESSTYPE_IPV4 == rowreq_ctx->tbl_idx.ipAddressPrefixType)
595         (*ipAddressPrefixAdvPreferredLifetime_val_ptr) = 4294967295U;    /* per MIB */
596     else
597         (*ipAddressPrefixAdvPreferredLifetime_val_ptr) =
598             rowreq_ctx->data.ipAddressPrefixAdvPreferredLifetime;
599 
600     return MFD_SUCCESS;
601 }                               /* ipAddressPrefixAdvPreferredLifetime_get */
602 
603 /*---------------------------------------------------------------------
604  * IP-MIB::ipAddressPrefixEntry.ipAddressPrefixAdvValidLifetime
605  * ipAddressPrefixAdvValidLifetime is subid 9 of ipAddressPrefixEntry.
606  * Its status is Current, and its access level is ReadOnly.
607  * OID: .1.3.6.1.2.1.4.32.1.9
608  * Description:
609 The remaining length of time, in seconds, that this prefix
610             will continue to be valid, i.e. time until invalidation.  A
611             value of 4,294,967,295 represents infinity.
612 
613 
614             The address generated from an invalidated prefix should not
615             appear as the destination or source address of a packet.
616 
617 
618             The default for IPv4 prefixes is 4,294,967,295 (infinity).
619  *
620  * Attributes:
621  *   accessible 1     isscalar 0     enums  0      hasdefval 0
622  *   readable   1     iscolumn 1     ranges 0      hashint   0
623  *   settable   0
624  *
625  *
626  * Its syntax is UNSIGNED32 (based on perltype UNSIGNED32)
627  * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
628  */
629 /**
630  * Extract the current value of the ipAddressPrefixAdvValidLifetime data.
631  *
632  * Set a value using the data context for the row.
633  *
634  * @param rowreq_ctx
635  *        Pointer to the row request context.
636  * @param ipAddressPrefixAdvValidLifetime_val_ptr
637  *        Pointer to storage for a u_long variable
638  *
639  * @retval MFD_SUCCESS         : success
640  * @retval MFD_SKIP            : skip this node (no value for now)
641  * @retval MFD_ERROR           : Any other error
642  */
643 int
ipAddressPrefixAdvValidLifetime_get(ipAddressPrefixTable_rowreq_ctx * rowreq_ctx,u_long * ipAddressPrefixAdvValidLifetime_val_ptr)644 ipAddressPrefixAdvValidLifetime_get(ipAddressPrefixTable_rowreq_ctx *
645                                     rowreq_ctx,
646                                     u_long *
647                                     ipAddressPrefixAdvValidLifetime_val_ptr)
648 {
649    /** we should have a non-NULL pointer */
650     netsnmp_assert(NULL != ipAddressPrefixAdvValidLifetime_val_ptr);
651 
652 
653     DEBUGMSGTL(("verbose:ipAddressPrefixTable:ipAddressPrefixAdvValidLifetime_get", "called\n"));
654 
655     netsnmp_assert(NULL != rowreq_ctx);
656 
657     /*
658      * TODO:231:o: |-> Extract the current value of the ipAddressPrefixAdvValidLifetime data.
659      * copy (* ipAddressPrefixAdvValidLifetime_val_ptr ) from rowreq_ctx->data
660      */
661     if (INETADDRESSTYPE_IPV4 == rowreq_ctx->tbl_idx.ipAddressPrefixType)
662         (*ipAddressPrefixAdvValidLifetime_val_ptr) = 4294967295U;        /* per MIB */
663     else
664         (*ipAddressPrefixAdvValidLifetime_val_ptr) =
665             rowreq_ctx->data.ipAddressPrefixAdvValidLifetime;
666 
667     return MFD_SUCCESS;
668 }                               /* ipAddressPrefixAdvValidLifetime_get */
669 
670 
671 
672 /** @} */
673 /** @} */
674 /** @{ */
675