inetCidrRouteTable.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:110k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * Note: this file originally auto-generated by mib2c using
  3.  *       version : 1.32 $ of : mfd-top.m2c,v $ 
  4.  *
  5.  * $Id: inetCidrRouteTable.c,v 1.5 2004/10/16 00:00:31 rstory Exp $
  6.  */
  7. /** mainpage MFD helper for inetCidrRouteTable
  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.  * include our parent header 
  21.  */
  22. #include "inetCidrRouteTable.h"
  23. #include <net-snmp/agent/mib_modules.h>
  24. #include "inetCidrRouteTable_interface.h"
  25. oid             inetCidrRouteTable_oid[] = { INETCIDRROUTETABLE_OID };
  26. int             inetCidrRouteTable_oid_size =
  27. OID_LENGTH(inetCidrRouteTable_oid);
  28. void            initialize_table_inetCidrRouteTable(void);
  29. /**
  30.  * Initializes the inetCidrRouteTable module
  31.  */
  32. void
  33. init_inetCidrRouteTable(void)
  34. {
  35.     DEBUGMSGTL(("verbose:inetCidrRouteTable:init_inetCidrRouteTable",
  36.                 "calledn"));
  37.     /*
  38.      * TODO:300:o: Perform inetCidrRouteTable one-time module initialization.
  39.      */
  40.     /*
  41.      * here we initialize all the tables we're planning on supporting
  42.      */
  43.     if (should_init("inetCidrRouteTable"))
  44.         initialize_table_inetCidrRouteTable();
  45. }                               /* init_inetCidrRouteTable */
  46. /**
  47.  * Initialize the table inetCidrRouteTable 
  48.  *    (Define its contents and how it's structured)
  49.  */
  50. void
  51. initialize_table_inetCidrRouteTable(void)
  52. {
  53.     inetCidrRouteTable_registration_ptr user_context;
  54.     u_long          flags;
  55.     DEBUGMSGTL(("verbose:inetCidrRouteTable:initialize_table_inetCidrRouteTable", "calledn"));
  56.     /*
  57.      * TODO:301:o: Perform inetCidrRouteTable one-time table initialization.
  58.      */
  59.     /*
  60.      * TODO:302:o: |->Initialize inetCidrRouteTable user context
  61.      * if you'd like to pass in a pointer to some data for this
  62.      * table, allocate or set it up here.
  63.      */
  64.     /*
  65.      * a netsnmp_data_list is a simple way to store void pointers. A simple
  66.      * string token is used to add, find or remove pointers.
  67.      */
  68.     user_context =
  69.         netsnmp_create_data_list("inetCidrRouteTable", NULL, NULL);
  70.     /*
  71.      * No support for any flags yet, but in the future you would
  72.      * set any flags here.
  73.      */
  74.     flags = 0;
  75.     /*
  76.      * call interface initialization code
  77.      */
  78.     _inetCidrRouteTable_initialize_interface(user_context, flags);
  79. }                               /* initialize_table_inetCidrRouteTable */
  80. /**
  81.  * pre-request callback
  82.  *
  83.  *
  84.  * @retval MFD_SUCCESS              : success.
  85.  * @retval MFD_ERROR                : other error
  86.  */
  87. int
  88. inetCidrRouteTable_pre_request(inetCidrRouteTable_registration_ptr
  89.                                user_context)
  90. {
  91.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_pre_request", "calledn"));
  92.     /*
  93.      * TODO:510:o: Perform inetCidrRouteTable pre-request actions.
  94.      */
  95.     return MFD_SUCCESS;
  96. }                               /* inetCidrRouteTable_pre_request */
  97. /**
  98.  * post-request callback
  99.  *
  100.  *
  101.  * @retval MFD_SUCCESS : success.
  102.  * @retval MFD_ERROR   : other error (ignored)
  103.  */
  104. int
  105. inetCidrRouteTable_post_request(inetCidrRouteTable_registration_ptr
  106.                                 user_context)
  107. {
  108.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_post_request", "calledn"));
  109.     /*
  110.      * TODO:511:o: Perform inetCidrRouteTable pos-request actions.
  111.      */
  112.     return MFD_SUCCESS;
  113. }                               /* inetCidrRouteTable_post_request */
  114. /**********************************************************************
  115.  **********************************************************************
  116.  ***
  117.  *** Table inetCidrRouteTable
  118.  ***
  119.  **********************************************************************
  120.  **********************************************************************/
  121. /*
  122.  * inetCidrRouteTable is subid 7 of ipForward.
  123.  * Its status is Current.
  124.  * OID: .1.3.6.1.2.1.4.24.7, length: 9
  125.  */
  126. /*
  127.  * ---------------------------------------------------------------------
  128.  * * TODO:200:r: Implement inetCidrRouteTable data context functions.
  129.  */
  130. /*
  131.  * inetCidrRouteTable_allocate_data
  132.  *
  133.  * Purpose: create new inetCidrRouteTable_data.
  134.  */
  135. inetCidrRouteTable_data *
  136. inetCidrRouteTable_allocate_data(void)
  137. {
  138.     /*
  139.      * TODO:201:r: |-> allocate memory for the inetCidrRouteTable data context.
  140.      */
  141.     inetCidrRouteTable_data *rtn = netsnmp_access_route_entry_create();
  142.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_allocate_data", "calledn"));
  143.     if (NULL == rtn) {
  144.         snmp_log(LOG_ERR, "unable to malloc memory for new "
  145.                  "inetCidrRouteTable_data.n");
  146.     }
  147.     return rtn;
  148. }                               /* inetCidrRouteTable_allocate_data */
  149. /*
  150.  * inetCidrRouteTable_release_data
  151.  *
  152.  * Purpose: release inetCidrRouteTable data.
  153.  */
  154. void
  155. inetCidrRouteTable_release_data(inetCidrRouteTable_data * data)
  156. {
  157.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_release_data", "calledn"));
  158.     /*
  159.      * TODO:202:r: |-> release memory for the inetCidrRouteTable data context.
  160.      */
  161.     netsnmp_access_route_entry_free(data);
  162. }                               /* inetCidrRouteTable_release_data */
  163. /**
  164.  * set mib index(es)
  165.  *
  166.  * @param tbl_idx mib index structure
  167.  *
  168.  * @retval MFD_SUCCESS     : success.
  169.  * @retval MFD_ERROR       : other error.
  170.  *
  171.  * @remark
  172.  *  This convenience function is useful for setting all the MIB index
  173.  *  components with a single function call. It is assume that the C values
  174.  *  have already been mapped from their native/rawformat to the MIB format.
  175.  */
  176. int
  177. inetCidrRouteTable_indexes_set_tbl_idx(inetCidrRouteTable_mib_index *
  178.                                        tbl_idx,
  179.                                        u_long inetCidrRouteDestType_val,
  180.                                        char *inetCidrRouteDest_val_ptr,
  181.                                        size_t
  182.                                        inetCidrRouteDest_val_ptr_len,
  183.                                        u_long inetCidrRoutePfxLen_val,
  184.                                        oid * inetCidrRoutePolicy_val_ptr,
  185.                                        size_t
  186.                                        inetCidrRoutePolicy_val_ptr_len,
  187.                                        u_long inetCidrRouteNextHopType_val,
  188.                                        char *inetCidrRouteNextHop_val_ptr,
  189.                                        size_t
  190.                                        inetCidrRouteNextHop_val_ptr_len)
  191. {
  192.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_indexes_set_tbl_idx", "calledn"));
  193.     /*
  194.      * inetCidrRouteDestType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
  195.      */
  196.     /** WARNING: this code might not work for netsnmp_route_entry */
  197.     tbl_idx->inetCidrRouteDestType = inetCidrRouteDestType_val;
  198.     /*
  199.      * inetCidrRouteDest(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h 
  200.      */
  201.     tbl_idx->inetCidrRouteDest_len = sizeof(tbl_idx->inetCidrRouteDest);
  202.     /** WARNING: this code might not work for netsnmp_route_entry */
  203.     /*
  204.      * make sure there is enough space for inetCidrRouteDest data
  205.      */
  206.     if (tbl_idx->inetCidrRouteDest_len < inetCidrRouteDest_val_ptr_len) {
  207.         snmp_log(LOG_ERR, "not enough space for valuen");
  208.         return MFD_ERROR;
  209.     }
  210.     tbl_idx->inetCidrRouteDest_len = inetCidrRouteDest_val_ptr_len;
  211.     memcpy(tbl_idx->inetCidrRouteDest, inetCidrRouteDest_val_ptr,
  212.            tbl_idx->inetCidrRouteDest_len *
  213.            sizeof(tbl_idx->inetCidrRouteDest[0]));
  214.     /*
  215.      * inetCidrRoutePfxLen(3)/InetAddressPrefixLength/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/H 
  216.      */
  217.     /** WARNING: this code might not work for netsnmp_route_entry */
  218.     tbl_idx->inetCidrRoutePfxLen = inetCidrRoutePfxLen_val;
  219.     /*
  220.      * inetCidrRoutePolicy(4)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/a/w/e/r/d/h 
  221.      */
  222.     tbl_idx->inetCidrRoutePolicy_len =
  223.         sizeof(tbl_idx->inetCidrRoutePolicy);
  224.     /** WARNING: this code might not work for netsnmp_route_entry */
  225.     /*
  226.      * make sure there is enough space for inetCidrRoutePolicy data
  227.      */
  228.     if (tbl_idx->inetCidrRoutePolicy_len < inetCidrRoutePolicy_val_ptr_len) {
  229.         snmp_log(LOG_ERR, "not enough space for valuen");
  230.         return MFD_ERROR;
  231.     }
  232.     if (0 != inetCidrRoutePolicy_val_ptr_len)
  233.         tbl_idx->inetCidrRoutePolicy_len = inetCidrRoutePolicy_val_ptr_len;
  234.     else {
  235.         tbl_idx->inetCidrRoutePolicy_len = nullOidLen / sizeof(oid);
  236.         inetCidrRoutePolicy_val_ptr = nullOid;
  237.     }
  238.     memcpy(tbl_idx->inetCidrRoutePolicy, inetCidrRoutePolicy_val_ptr,
  239.            tbl_idx->inetCidrRoutePolicy_len *
  240.            sizeof(tbl_idx->inetCidrRoutePolicy[0]));
  241.     /*
  242.      * inetCidrRouteNextHopType(5)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
  243.      */
  244.     /** WARNING: this code might not work for netsnmp_route_entry */
  245.     tbl_idx->inetCidrRouteNextHopType = inetCidrRouteNextHopType_val;
  246.     /*
  247.      * inetCidrRouteNextHop(6)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h 
  248.      */
  249.     tbl_idx->inetCidrRouteNextHop_len =
  250.         sizeof(tbl_idx->inetCidrRouteNextHop);
  251.     /** WARNING: this code might not work for netsnmp_route_entry */
  252.     /*
  253.      * make sure there is enough space for inetCidrRouteNextHop data
  254.      */
  255.     if ((NULL == tbl_idx->inetCidrRouteNextHop)
  256.         || (tbl_idx->inetCidrRouteNextHop_len <
  257.             inetCidrRouteNextHop_val_ptr_len)) {
  258.         snmp_log(LOG_ERR, "not enough space for valuen");
  259.         return MFD_ERROR;
  260.     }
  261.     tbl_idx->inetCidrRouteNextHop_len = inetCidrRouteNextHop_val_ptr_len;
  262.     memcpy(tbl_idx->inetCidrRouteNextHop, inetCidrRouteNextHop_val_ptr,
  263.            tbl_idx->inetCidrRouteNextHop_len *
  264.            sizeof(tbl_idx->inetCidrRouteNextHop[0]));
  265.     return MFD_SUCCESS;
  266. }                               /* inetCidrRouteTable_indexes_set_tbl_idx */
  267. /**
  268.  * @internal
  269.  * set row context indexes
  270.  *
  271.  * @param reqreq_ctx the row context that needs updated indexes
  272.  *
  273.  * @retval MFD_SUCCESS     : success.
  274.  * @retval MFD_ERROR       : other error.
  275.  *
  276.  * @remark
  277.  *  This function sets the mib indexs, then updates the oid indexs
  278.  *  from the mib index.
  279.  */
  280. int
  281. inetCidrRouteTable_indexes_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  282.                                u_long inetCidrRouteDestType_val,
  283.                                char *inetCidrRouteDest_val_ptr,
  284.                                size_t inetCidrRouteDest_val_ptr_len,
  285.                                u_long inetCidrRoutePfxLen_val,
  286.                                oid * inetCidrRoutePolicy_val_ptr,
  287.                                size_t inetCidrRoutePolicy_val_ptr_len,
  288.                                u_long inetCidrRouteNextHopType_val,
  289.                                char *inetCidrRouteNextHop_val_ptr,
  290.                                size_t inetCidrRouteNextHop_val_ptr_len)
  291. {
  292.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_indexes_set", "calledn"));
  293.     if (MFD_SUCCESS !=
  294.         inetCidrRouteTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
  295.                                                inetCidrRouteDestType_val,
  296.                                                inetCidrRouteDest_val_ptr,
  297.                                                inetCidrRouteDest_val_ptr_len,
  298.                                                inetCidrRoutePfxLen_val,
  299.                                                inetCidrRoutePolicy_val_ptr,
  300.                                                inetCidrRoutePolicy_val_ptr_len,
  301.                                                inetCidrRouteNextHopType_val,
  302.                                                inetCidrRouteNextHop_val_ptr,
  303.                                                inetCidrRouteNextHop_val_ptr_len))
  304.         return MFD_ERROR;
  305.     /*
  306.      * convert mib index to oid index
  307.      */
  308.     rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
  309.     if (0 != inetCidrRouteTable_index_to_oid(&rowreq_ctx->oid_idx,
  310.                                              &rowreq_ctx->tbl_idx)) {
  311.         return MFD_ERROR;
  312.     }
  313.     return MFD_SUCCESS;
  314. }                               /* inetCidrRouteTable_indexes_set */
  315. /*---------------------------------------------------------------------
  316.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteIfIndex
  317.  * inetCidrRouteIfIndex is subid 7 of inetCidrRouteEntry.
  318.  * Its status is Current, and its access level is Create.
  319.  * OID: .1.3.6.1.2.1.4.24.7.1.7
  320.  * Description:
  321. The ifIndex value which identifies the local interface 
  322.                 through which the next hop of this route should be  
  323.                 reached.  A value of 0 is valid and represents the 
  324.                 scenario where no interface is specified.
  325.  *
  326.  * Attributes:
  327.  *   accessible 1     isscalar 0     enums  0      hasdefval 0
  328.  *   readable   1     iscolumn 1     ranges 1      hashint   1
  329.  *   settable   1
  330.  *   hint: d
  331.  *
  332.  * Ranges:  0 - 2147483647;
  333.  *
  334.  * Its syntax is InterfaceIndexOrZero (based on perltype INTEGER32)
  335.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  336.  */
  337. /**
  338.  * Extract the current value of the inetCidrRouteIfIndex data.
  339.  *
  340.  * Set a value using the data context for the row.
  341.  *
  342.  * @param rowreq_ctx
  343.  *        Pointer to the row request context.
  344.  * @param inetCidrRouteIfIndex_val_ptr
  345.  *        Pointer to storage for a long variable
  346.  *
  347.  * @retval MFD_SUCCESS         : success
  348.  * @retval MFD_SKIP            : skip this node (no value for now)
  349.  * @retval MFD_ERROR           : Any other error
  350.  */
  351. int
  352. inetCidrRouteIfIndex_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  353.                          long *inetCidrRouteIfIndex_val_ptr)
  354. {
  355.    /** we should have a non-NULL pointer */
  356.     netsnmp_assert(NULL != inetCidrRouteIfIndex_val_ptr);
  357.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteIfIndex_get",
  358.                 "calledn"));
  359.     netsnmp_assert(NULL != rowreq_ctx);
  360.     /*
  361.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteIfIndex data.
  362.      * set (* inetCidrRouteIfIndex_val_ptr ) from rowreq_ctx->data
  363.      */
  364.     (*inetCidrRouteIfIndex_val_ptr) = rowreq_ctx->data->if_index;
  365.     return MFD_SUCCESS;
  366. }                               /* inetCidrRouteIfIndex_get */
  367. /*---------------------------------------------------------------------
  368.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteType
  369.  * inetCidrRouteType is subid 8 of inetCidrRouteEntry.
  370.  * Its status is Current, and its access level is Create.
  371.  * OID: .1.3.6.1.2.1.4.24.7.1.8
  372.  * Description:
  373. The type of route.  Note that local(3) refers to a  
  374.                 route for which the next hop is the final destination;  
  375.                 remote(4)refers to a route for which the next hop is  
  376.                 not the final destination. 
  377.                 Routes which do not result in traffic forwarding or 
  378.                 rejection should not be displayed even if the  
  379.                 implementation keeps them stored internally. 
  380.                 reject(2) refers to a route which, if matched, discards  
  381.                 the message as unreachable and returns a notification  
  382.                 (e.g. ICMP error) to the message sender.  This is used  
  383.                 in some protocols as a means of correctly aggregating  
  384.                 routes. 
  385.                 blackhole(5) refers to a route which, if matched,  
  386.                 discards the message silently.
  387.  *
  388.  * Attributes:
  389.  *   accessible 1     isscalar 0     enums  1      hasdefval 0
  390.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  391.  *   settable   1
  392.  *
  393.  * Enum range: 3/8. Values:  other(1), reject(2), local(3), remote(4), blackhole(5)
  394.  *
  395.  * Its syntax is INTEGER (based on perltype INTEGER)
  396.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  397.  */
  398. /**
  399.  * Extract the current value of the inetCidrRouteType data.
  400.  *
  401.  * Set a value using the data context for the row.
  402.  *
  403.  * @param rowreq_ctx
  404.  *        Pointer to the row request context.
  405.  * @param inetCidrRouteType_val_ptr
  406.  *        Pointer to storage for a long variable
  407.  *
  408.  * @retval MFD_SUCCESS         : success
  409.  * @retval MFD_SKIP            : skip this node (no value for now)
  410.  * @retval MFD_ERROR           : Any other error
  411.  */
  412. int
  413. inetCidrRouteType_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  414.                       u_long * inetCidrRouteType_val_ptr)
  415. {
  416.    /** we should have a non-NULL pointer */
  417.     netsnmp_assert(NULL != inetCidrRouteType_val_ptr);
  418.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteType_get",
  419.                 "calledn"));
  420.     netsnmp_assert(NULL != rowreq_ctx);
  421.     /*
  422.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteType data.
  423.      * set (* inetCidrRouteType_val_ptr ) from rowreq_ctx->data
  424.      */
  425.     (*inetCidrRouteType_val_ptr) = rowreq_ctx->data->rt_type;
  426.     return MFD_SUCCESS;
  427. }                               /* inetCidrRouteType_get */
  428. /*---------------------------------------------------------------------
  429.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteProto
  430.  * inetCidrRouteProto is subid 9 of inetCidrRouteEntry.
  431.  * Its status is Current, and its access level is ReadOnly.
  432.  * OID: .1.3.6.1.2.1.4.24.7.1.9
  433.  * Description:
  434. The routing mechanism via which this route was learned. 
  435.                 Inclusion of values for gateway routing protocols is  
  436.                 not intended to imply that hosts should support those 
  437.                 protocols.
  438.  *
  439.  * Attributes:
  440.  *   accessible 1     isscalar 0     enums  1      hasdefval 0
  441.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  442.  *   settable   0
  443.  *
  444.  * Enum range: 13/32. Values:  other(1), local(2), netmgmt(3), icmp(4), egp(5), ggp(6), hello(7), rip(8), isIs(9), esIs(10), ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14), idpr(15), ciscoEigrp(16), dvmrp(17)
  445.  *
  446.  * Its syntax is IANAipRouteProtocol (based on perltype INTEGER)
  447.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  448.  */
  449. /**
  450.  * Extract the current value of the inetCidrRouteProto data.
  451.  *
  452.  * Set a value using the data context for the row.
  453.  *
  454.  * @param rowreq_ctx
  455.  *        Pointer to the row request context.
  456.  * @param inetCidrRouteProto_val_ptr
  457.  *        Pointer to storage for a long variable
  458.  *
  459.  * @retval MFD_SUCCESS         : success
  460.  * @retval MFD_SKIP            : skip this node (no value for now)
  461.  * @retval MFD_ERROR           : Any other error
  462.  */
  463. int
  464. inetCidrRouteProto_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  465.                        u_long * inetCidrRouteProto_val_ptr)
  466. {
  467.    /** we should have a non-NULL pointer */
  468.     netsnmp_assert(NULL != inetCidrRouteProto_val_ptr);
  469.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteProto_get",
  470.                 "calledn"));
  471.     netsnmp_assert(NULL != rowreq_ctx);
  472.     /*
  473.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteProto data.
  474.      * set (* inetCidrRouteProto_val_ptr ) from rowreq_ctx->data
  475.      */
  476.     (*inetCidrRouteProto_val_ptr) = rowreq_ctx->data->rt_proto;
  477.     return MFD_SUCCESS;
  478. }                               /* inetCidrRouteProto_get */
  479. /*---------------------------------------------------------------------
  480.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteAge
  481.  * inetCidrRouteAge is subid 10 of inetCidrRouteEntry.
  482.  * Its status is Current, and its access level is ReadOnly.
  483.  * OID: .1.3.6.1.2.1.4.24.7.1.10
  484.  * Description:
  485. The number of seconds since this route was last updated  
  486.                 or otherwise determined to be correct.  Note that no  
  487.                 semantics of 'too old' can be implied except through  
  488.                 knowledge of the routing protocol by which the route  
  489.                 was learned.
  490.  *
  491.  * Attributes:
  492.  *   accessible 1     isscalar 0     enums  0      hasdefval 0
  493.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  494.  *   settable   0
  495.  *
  496.  *
  497.  * Its syntax is GAUGE (based on perltype GAUGE)
  498.  * The net-snmp type is ASN_GAUGE. The C type decl is u_long (u_long)
  499.  */
  500. /**
  501.  * Extract the current value of the inetCidrRouteAge data.
  502.  *
  503.  * Set a value using the data context for the row.
  504.  *
  505.  * @param rowreq_ctx
  506.  *        Pointer to the row request context.
  507.  * @param inetCidrRouteAge_val_ptr
  508.  *        Pointer to storage for a u_long variable
  509.  *
  510.  * @retval MFD_SUCCESS         : success
  511.  * @retval MFD_SKIP            : skip this node (no value for now)
  512.  * @retval MFD_ERROR           : Any other error
  513.  */
  514. int
  515. inetCidrRouteAge_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  516.                      u_long * inetCidrRouteAge_val_ptr)
  517. {
  518.    /** we should have a non-NULL pointer */
  519.     netsnmp_assert(NULL != inetCidrRouteAge_val_ptr);
  520.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteAge_get",
  521.                 "calledn"));
  522.     netsnmp_assert(NULL != rowreq_ctx);
  523.     /*
  524.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteAge data.
  525.      * set (* inetCidrRouteAge_val_ptr ) from rowreq_ctx->data
  526.      */
  527.     (*inetCidrRouteAge_val_ptr) = rowreq_ctx->data->rt_age;
  528.     return MFD_SUCCESS;
  529. }                               /* inetCidrRouteAge_get */
  530. /*---------------------------------------------------------------------
  531.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteNextHopAS
  532.  * inetCidrRouteNextHopAS is subid 11 of inetCidrRouteEntry.
  533.  * Its status is Current, and its access level is Create.
  534.  * OID: .1.3.6.1.2.1.4.24.7.1.11
  535.  * Description:
  536. The Autonomous System Number of the Next Hop.  The  
  537.                 semantics of this object are determined by the routing- 
  538.                 protocol specified in the route's inetCidrRouteProto  
  539.                 value. When this object is unknown or not relevant its  
  540.                 value should be set to zero.
  541.  *
  542.  * Attributes:
  543.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  544.  *   readable   1     iscolumn 1     ranges 0      hashint   1
  545.  *   settable   1
  546.  *   defval: 0
  547.  *   hint: d
  548.  *
  549.  *
  550.  * Its syntax is InetAutonomousSystemNumber (based on perltype UNSIGNED32)
  551.  * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
  552.  */
  553. /**
  554.  * Extract the current value of the inetCidrRouteNextHopAS data.
  555.  *
  556.  * Set a value using the data context for the row.
  557.  *
  558.  * @param rowreq_ctx
  559.  *        Pointer to the row request context.
  560.  * @param inetCidrRouteNextHopAS_val_ptr
  561.  *        Pointer to storage for a u_long variable
  562.  *
  563.  * @retval MFD_SUCCESS         : success
  564.  * @retval MFD_SKIP            : skip this node (no value for now)
  565.  * @retval MFD_ERROR           : Any other error
  566.  */
  567. int
  568. inetCidrRouteNextHopAS_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  569.                            u_long * inetCidrRouteNextHopAS_val_ptr)
  570. {
  571.    /** we should have a non-NULL pointer */
  572.     netsnmp_assert(NULL != inetCidrRouteNextHopAS_val_ptr);
  573.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHopAS_get",
  574.                 "calledn"));
  575.     netsnmp_assert(NULL != rowreq_ctx);
  576.     /*
  577.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteNextHopAS data.
  578.      * set (* inetCidrRouteNextHopAS_val_ptr ) from rowreq_ctx->data
  579.      */
  580.     (*inetCidrRouteNextHopAS_val_ptr) = rowreq_ctx->data->rt_nexthop_as;
  581.     return MFD_SUCCESS;
  582. }                               /* inetCidrRouteNextHopAS_get */
  583. /*---------------------------------------------------------------------
  584.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric1
  585.  * inetCidrRouteMetric1 is subid 12 of inetCidrRouteEntry.
  586.  * Its status is Current, and its access level is Create.
  587.  * OID: .1.3.6.1.2.1.4.24.7.1.12
  588.  * Description:
  589. The primary routing metric for this route.  The  
  590.                 semantics of this metric are determined by the routing- 
  591.                 protocol specified in the route's inetCidrRouteProto  
  592.                 value.  If this metric is not used, its value should be  
  593.                 set to -1.
  594.  *
  595.  * Attributes:
  596.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  597.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  598.  *   settable   1
  599.  *   defval: -1
  600.  *
  601.  *
  602.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  603.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  604.  */
  605. /**
  606.  * Extract the current value of the inetCidrRouteMetric1 data.
  607.  *
  608.  * Set a value using the data context for the row.
  609.  *
  610.  * @param rowreq_ctx
  611.  *        Pointer to the row request context.
  612.  * @param inetCidrRouteMetric1_val_ptr
  613.  *        Pointer to storage for a long variable
  614.  *
  615.  * @retval MFD_SUCCESS         : success
  616.  * @retval MFD_SKIP            : skip this node (no value for now)
  617.  * @retval MFD_ERROR           : Any other error
  618.  */
  619. int
  620. inetCidrRouteMetric1_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  621.                          long *inetCidrRouteMetric1_val_ptr)
  622. {
  623.    /** we should have a non-NULL pointer */
  624.     netsnmp_assert(NULL != inetCidrRouteMetric1_val_ptr);
  625.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric1_get",
  626.                 "calledn"));
  627.     netsnmp_assert(NULL != rowreq_ctx);
  628.     /*
  629.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteMetric1 data.
  630.      * set (* inetCidrRouteMetric1_val_ptr ) from rowreq_ctx->data
  631.      */
  632.     (*inetCidrRouteMetric1_val_ptr) = rowreq_ctx->data->rt_metric1;
  633.     return MFD_SUCCESS;
  634. }                               /* inetCidrRouteMetric1_get */
  635. /*---------------------------------------------------------------------
  636.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric2
  637.  * inetCidrRouteMetric2 is subid 13 of inetCidrRouteEntry.
  638.  * Its status is Current, and its access level is Create.
  639.  * OID: .1.3.6.1.2.1.4.24.7.1.13
  640.  * Description:
  641. An alternate routing metric for this route.  The  
  642.                 semantics of this metric are determined by the routing- 
  643.                 protocol specified in the route's inetCidrRouteProto  
  644.                 value.  If this metric is not used, its value should be  
  645.                 set to -1.
  646.  *
  647.  * Attributes:
  648.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  649.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  650.  *   settable   1
  651.  *   defval: -1
  652.  *
  653.  *
  654.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  655.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  656.  */
  657. /**
  658.  * Extract the current value of the inetCidrRouteMetric2 data.
  659.  *
  660.  * Set a value using the data context for the row.
  661.  *
  662.  * @param rowreq_ctx
  663.  *        Pointer to the row request context.
  664.  * @param inetCidrRouteMetric2_val_ptr
  665.  *        Pointer to storage for a long variable
  666.  *
  667.  * @retval MFD_SUCCESS         : success
  668.  * @retval MFD_SKIP            : skip this node (no value for now)
  669.  * @retval MFD_ERROR           : Any other error
  670.  */
  671. int
  672. inetCidrRouteMetric2_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  673.                          long *inetCidrRouteMetric2_val_ptr)
  674. {
  675.    /** we should have a non-NULL pointer */
  676.     netsnmp_assert(NULL != inetCidrRouteMetric2_val_ptr);
  677.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric2_get",
  678.                 "calledn"));
  679.     netsnmp_assert(NULL != rowreq_ctx);
  680.     /*
  681.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteMetric2 data.
  682.      * set (* inetCidrRouteMetric2_val_ptr ) from rowreq_ctx->data
  683.      */
  684.     (*inetCidrRouteMetric2_val_ptr) = rowreq_ctx->data->rt_metric2;
  685.     return MFD_SUCCESS;
  686. }                               /* inetCidrRouteMetric2_get */
  687. /*---------------------------------------------------------------------
  688.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric3
  689.  * inetCidrRouteMetric3 is subid 14 of inetCidrRouteEntry.
  690.  * Its status is Current, and its access level is Create.
  691.  * OID: .1.3.6.1.2.1.4.24.7.1.14
  692.  * Description:
  693. An alternate routing metric for this route.  The  
  694.                 semantics of this metric are determined by the routing- 
  695.                 protocol specified in the route's inetCidrRouteProto  
  696.                 value.  If this metric is not used, its value should be  
  697.                 set to -1.
  698.  *
  699.  * Attributes:
  700.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  701.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  702.  *   settable   1
  703.  *   defval: -1
  704.  *
  705.  *
  706.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  707.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  708.  */
  709. /**
  710.  * Extract the current value of the inetCidrRouteMetric3 data.
  711.  *
  712.  * Set a value using the data context for the row.
  713.  *
  714.  * @param rowreq_ctx
  715.  *        Pointer to the row request context.
  716.  * @param inetCidrRouteMetric3_val_ptr
  717.  *        Pointer to storage for a long variable
  718.  *
  719.  * @retval MFD_SUCCESS         : success
  720.  * @retval MFD_SKIP            : skip this node (no value for now)
  721.  * @retval MFD_ERROR           : Any other error
  722.  */
  723. int
  724. inetCidrRouteMetric3_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  725.                          long *inetCidrRouteMetric3_val_ptr)
  726. {
  727.    /** we should have a non-NULL pointer */
  728.     netsnmp_assert(NULL != inetCidrRouteMetric3_val_ptr);
  729.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric3_get",
  730.                 "calledn"));
  731.     netsnmp_assert(NULL != rowreq_ctx);
  732.     /*
  733.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteMetric3 data.
  734.      * set (* inetCidrRouteMetric3_val_ptr ) from rowreq_ctx->data
  735.      */
  736.     (*inetCidrRouteMetric3_val_ptr) = rowreq_ctx->data->rt_metric3;
  737.     return MFD_SUCCESS;
  738. }                               /* inetCidrRouteMetric3_get */
  739. /*---------------------------------------------------------------------
  740.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric4
  741.  * inetCidrRouteMetric4 is subid 15 of inetCidrRouteEntry.
  742.  * Its status is Current, and its access level is Create.
  743.  * OID: .1.3.6.1.2.1.4.24.7.1.15
  744.  * Description:
  745. An alternate routing metric for this route.  The  
  746.                 semantics of this metric are determined by the routing- 
  747.                 protocol specified in the route's inetCidrRouteProto  
  748.                 value.  If this metric is not used, its value should be  
  749.                 set to -1.
  750.  *
  751.  * Attributes:
  752.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  753.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  754.  *   settable   1
  755.  *   defval: -1
  756.  *
  757.  *
  758.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  759.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  760.  */
  761. /**
  762.  * Extract the current value of the inetCidrRouteMetric4 data.
  763.  *
  764.  * Set a value using the data context for the row.
  765.  *
  766.  * @param rowreq_ctx
  767.  *        Pointer to the row request context.
  768.  * @param inetCidrRouteMetric4_val_ptr
  769.  *        Pointer to storage for a long variable
  770.  *
  771.  * @retval MFD_SUCCESS         : success
  772.  * @retval MFD_SKIP            : skip this node (no value for now)
  773.  * @retval MFD_ERROR           : Any other error
  774.  */
  775. int
  776. inetCidrRouteMetric4_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  777.                          long *inetCidrRouteMetric4_val_ptr)
  778. {
  779.    /** we should have a non-NULL pointer */
  780.     netsnmp_assert(NULL != inetCidrRouteMetric4_val_ptr);
  781.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric4_get",
  782.                 "calledn"));
  783.     netsnmp_assert(NULL != rowreq_ctx);
  784.     /*
  785.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteMetric4 data.
  786.      * set (* inetCidrRouteMetric4_val_ptr ) from rowreq_ctx->data
  787.      */
  788.     (*inetCidrRouteMetric4_val_ptr) = rowreq_ctx->data->rt_metric4;
  789.     return MFD_SUCCESS;
  790. }                               /* inetCidrRouteMetric4_get */
  791. /*---------------------------------------------------------------------
  792.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric5
  793.  * inetCidrRouteMetric5 is subid 16 of inetCidrRouteEntry.
  794.  * Its status is Current, and its access level is Create.
  795.  * OID: .1.3.6.1.2.1.4.24.7.1.16
  796.  * Description:
  797. An alternate routing metric for this route.  The  
  798.                 semantics of this metric are determined by the routing- 
  799.                 protocol specified in the route's inetCidrRouteProto  
  800.                 value.  If this metric is not used, its value should be  
  801.                 set to -1.
  802.  *
  803.  * Attributes:
  804.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  805.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  806.  *   settable   1
  807.  *   defval: -1
  808.  *
  809.  *
  810.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  811.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  812.  */
  813. /**
  814.  * Extract the current value of the inetCidrRouteMetric5 data.
  815.  *
  816.  * Set a value using the data context for the row.
  817.  *
  818.  * @param rowreq_ctx
  819.  *        Pointer to the row request context.
  820.  * @param inetCidrRouteMetric5_val_ptr
  821.  *        Pointer to storage for a long variable
  822.  *
  823.  * @retval MFD_SUCCESS         : success
  824.  * @retval MFD_SKIP            : skip this node (no value for now)
  825.  * @retval MFD_ERROR           : Any other error
  826.  */
  827. int
  828. inetCidrRouteMetric5_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  829.                          long *inetCidrRouteMetric5_val_ptr)
  830. {
  831.    /** we should have a non-NULL pointer */
  832.     netsnmp_assert(NULL != inetCidrRouteMetric5_val_ptr);
  833.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric5_get",
  834.                 "calledn"));
  835.     netsnmp_assert(NULL != rowreq_ctx);
  836.     /*
  837.      * TODO:231:o: |-> Extract the current value of the inetCidrRouteMetric5 data.
  838.      * set (* inetCidrRouteMetric5_val_ptr ) from rowreq_ctx->data
  839.      */
  840.     (*inetCidrRouteMetric5_val_ptr) = rowreq_ctx->data->rt_metric5;
  841.     return MFD_SUCCESS;
  842. }                               /* inetCidrRouteMetric5_get */
  843. /*---------------------------------------------------------------------
  844.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteStatus
  845.  * inetCidrRouteStatus is subid 17 of inetCidrRouteEntry.
  846.  * Its status is Current, and its access level is Create.
  847.  * OID: .1.3.6.1.2.1.4.24.7.1.17
  848.  * Description:
  849. The row status variable, used according to row  
  850.                 installation and removal conventions. 
  851.                 A row entry cannot be modified when the status is 
  852.                 marked as active(1).
  853.  *
  854.  * Attributes:
  855.  *   accessible 1     isscalar 0     enums  1      hasdefval 0
  856.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  857.  *   settable   1
  858.  *
  859.  * Enum range: 3/8. Values:  active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6)
  860.  *
  861.  * Its syntax is RowStatus (based on perltype INTEGER)
  862.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  863.  */
  864. /**
  865.  * Extract the current value of the inetCidrRouteStatus data.
  866.  *
  867.  * Set a value using the data context for the row.
  868.  *
  869.  * @param rowreq_ctx
  870.  *        Pointer to the row request context.
  871.  * @param inetCidrRouteStatus_val_ptr
  872.  *        Pointer to storage for a long variable
  873.  *
  874.  * @retval MFD_SUCCESS         : success
  875.  * @retval MFD_SKIP            : skip this node (no value for now)
  876.  * @retval MFD_ERROR           : Any other error
  877.  */
  878. int
  879. inetCidrRouteStatus_get(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  880.                         u_long * inetCidrRouteStatus_val_ptr)
  881. {
  882.    /** we should have a non-NULL pointer */
  883.     netsnmp_assert(NULL != inetCidrRouteStatus_val_ptr);
  884.     /** WARNING: this code might not work for netsnmp_route_entry */
  885.     (*inetCidrRouteStatus_val_ptr) = rowreq_ctx->inetCidrRouteStatus;
  886.     return MFD_SUCCESS;
  887. }                               /* inetCidrRouteStatus_get */
  888. /** @} */
  889. /**********************************************************************
  890.  **********************************************************************
  891.  ***
  892.  *** Table inetCidrRouteTable
  893.  ***
  894.  **********************************************************************
  895.  **********************************************************************/
  896. /*
  897.  * inetCidrRouteTable is subid 7 of ipForward.
  898.  * Its status is Current.
  899.  * OID: .1.3.6.1.2.1.4.24.7, length: 9
  900.  */
  901.     /*
  902.      * NOTE: if you update this chart, please update the versions in
  903.      *       local/mib2c-conf.d/parent-set.m2i
  904.      *       agent/mibgroup/helpers/baby_steps.c
  905.      * while you're at it.
  906.      */
  907.     /*
  908.      ***********************************************************************
  909.      * Baby Steps Flow Chart (2004.06.05)                                  *
  910.      *                                                                     *
  911.      * +--------------+    +================+    U = unconditional path    *
  912.      * |optional state|    ||required state||    S = path for success      *
  913.      * +--------------+    +================+    E = path for error        *
  914.      ***********************************************************************
  915.      *
  916.      *                        +--------------+
  917.      *                        |     pre      |
  918.      *                        |   request    |
  919.      *                        +--------------+
  920.      *                               | U
  921.      * +-------------+        +==============+
  922.      * |    row    |f|<-------||  object    ||
  923.      * |  create   |1|      E ||  lookup    ||
  924.      * +-------------+        +==============+
  925.      *     E |   | S                 | S
  926.      *       |   +------------------>|
  927.      *       |                +==============+
  928.      *       |              E ||   check    ||
  929.      *       |<---------------||   values   ||
  930.      *       |                +==============+
  931.      *       |                       | S
  932.      *       |                +==============+
  933.      *       |       +<-------||   undo     ||
  934.      *       |       |      E ||   setup    ||
  935.      *       |       |        +==============+
  936.      *       |       |               | S
  937.      *       |       |        +==============+
  938.      *       |       |        ||    set     ||-------------------------->+
  939.      *       |       |        ||   value    || E                         |
  940.      *       |       |        +==============+                           |
  941.      *       |       |               | S                                 |
  942.      *       |       |        +--------------+                           |
  943.      *       |       |        |    check     |-------------------------->|
  944.      *       |       |        |  consistency | E                         |
  945.      *       |       |        +--------------+                           |
  946.      *       |       |               | S                                 |
  947.      *       |       |        +==============+         +==============+  |
  948.      *       |       |        ||   commit   ||-------->||     undo   ||  |
  949.      *       |       |        ||            || E       ||    commit  ||  |
  950.      *       |       |        +==============+         +==============+  |
  951.      *       |       |               | S                     U |<--------+
  952.      *       |       |        +--------------+         +==============+
  953.      *       |       |        | irreversible |         ||    undo    ||
  954.      *       |       |        |    commit    |         ||     set    ||
  955.      *       |       |        +--------------+         +==============+
  956.      *       |       |               | U                     U |
  957.      *       |       +-------------->|<------------------------+
  958.      *       |                +==============+
  959.      *       |                ||   undo     ||
  960.      *       |                ||  cleanup   ||
  961.      *       |                +==============+
  962.      *       +---------------------->| U
  963.      *                               |
  964.      *                          (err && f1)------------------->+
  965.      *                               |                         |
  966.      *                        +--------------+         +--------------+
  967.      *                        |    post      |<--------|      row     |
  968.      *                        |   request    |       U |    release   |
  969.      *                        +--------------+         +--------------+
  970.      *
  971.      */
  972. /**
  973.  * verify specified index is valid.
  974.  *
  975.  * This check is independent of whether or not the values specified for
  976.  * the columns of the new row are valid. Column values and row consistency
  977.  * will be checked later. At this point, only the index values should be
  978.  * checked.
  979.  *
  980.  * All of the individual index validation functions have been called, so this
  981.  * is the place to make sure they are valid as a whole when combined. If
  982.  * you only have one index, 
  983.  * 
  984.  *
  985.  *
  986.  * @param inetCidrRouteTable_reg
  987.  *        Pointer to the user registration data
  988.  * @param inetCidrRouteTable_rowreq_ctx
  989.  *        Pointer to the users context.
  990.  * @retval MFD_SUCCESS            : success
  991.  * @retval MFD_CANNOT_CREATE_NOW  : index not valid right now
  992.  * @retval MFD_CANNOT_CREATE_EVER : index never valid
  993.  */
  994. int
  995. inetCidrRouteTable_validate_index(inetCidrRouteTable_registration_ptr
  996.                                   inetCidrRouteTable_reg,
  997.                                   inetCidrRouteTable_rowreq_ctx *
  998.                                   rowreq_ctx)
  999. {
  1000.     int             rc = MFD_SUCCESS;
  1001.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_validate_index", "calledn"));
  1002.     /** we should have a non-NULL pointer */
  1003.     netsnmp_assert(NULL != rowreq_ctx);
  1004.     /*
  1005.      * TODO:430:M: |-> Validate potential inetCidrRouteTable index.
  1006.      */
  1007.     if (1) {
  1008.         snmp_log(LOG_WARNING, "invalid index for a new row in the "
  1009.                  "inetCidrRouteTable table.n");
  1010.         /*
  1011.          * determine failure type.
  1012.          *
  1013.          * If the index could not ever be created, return MFD_NOT_EVER
  1014.          * If the index can not be created under the present circumstances
  1015.          * (even though it could be created under other circumstances),
  1016.          * return MFD_NOT_NOW.
  1017.          */
  1018.         if (0) {
  1019.             return MFD_CANNOT_CREATE_EVER;
  1020.         } else {
  1021.             return MFD_CANNOT_CREATE_NOW;
  1022.         }
  1023.     }
  1024.     return rc;
  1025. }                               /* inetCidrRouteTable_validate_index */
  1026. /**
  1027.  * Setup up context with information needed to undo a set request.
  1028.  *
  1029.  * This function will be called before the individual node undo setup
  1030.  * functions are called. If you need to do any undo setup that is not
  1031.  * related to a specific column, you can do it here.
  1032.  *
  1033.  * Note that an individual node's undo_setup function will only be called
  1034.  * if that node is being set to a new value.
  1035.  *
  1036.  * If there is any setup specific to a particular column (e.g. allocating
  1037.  * memory for a string), you should do that setup in the node's undo_setup
  1038.  * function, so it won't be done unless it is necessary.
  1039.  *
  1040.  * @param rowreq_ctx
  1041.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  1042.  *
  1043.  * @retval MFD_SUCCESS : success
  1044.  * @retval MFD_ERROR   : error. set will fail.
  1045.  */
  1046. int
  1047. inetCidrRouteTable_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1048. {
  1049.     int             rc = MFD_SUCCESS;
  1050.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_undo_setup",
  1051.                 "calledn"));
  1052.     /** we should have a non-NULL pointer */
  1053.     netsnmp_assert(NULL != rowreq_ctx);
  1054.     /*
  1055.      * TODO:451:M: |-> Setup inetCidrRouteTable undo.
  1056.      * set up inetCidrRouteTable undo information, in preparation for a set.
  1057.      */
  1058.     return rc;
  1059. }                               /* inetCidrRouteTable_undo_setup */
  1060. /**
  1061.  * Cleanup up context undo information.
  1062.  *
  1063.  * This function will be called after set/commit processing. If you
  1064.  * allocated any resources in undo_setup, this is the place to release
  1065.  * those resources.
  1066.  *
  1067.  * This function is called regardless of the success or failure of the set
  1068.  * request. If you need to perform different steps for cleanup depending
  1069.  * on success or failure, you can add a flag to the rowreq_ctx.
  1070.  *
  1071.  * @param rowreq_ctx
  1072.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  1073.  *
  1074.  * @retval MFD_SUCCESS : success
  1075.  * @retval MFD_ERROR   : error
  1076.  */
  1077. int
  1078. inetCidrRouteTable_undo_cleanup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1079. {
  1080.     int             rc = MFD_SUCCESS;
  1081.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_undo_cleanup", "calledn"));
  1082.     /** we should have a non-NULL pointer */
  1083.     netsnmp_assert(NULL != rowreq_ctx);
  1084.     /*
  1085.      * TODO:452:M: |-> Cleanup inetCidrRouteTable undo.
  1086.      */
  1087.     return rc;
  1088. }                               /* inetCidrRouteTable_undo_cleanup */
  1089. /**
  1090.  * commit new values.
  1091.  *
  1092.  * At this point, you should have done everything you can to ensure that
  1093.  * this commit will not fail.
  1094.  *
  1095.  * Should you need different behavior depending on which columns were
  1096.  * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
  1097.  * set. The definitions for the FLAG_* bits can be found in
  1098.  * inetCidrRouteTable.h.
  1099.  * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
  1100.  *
  1101.  * @param inetCidrRouteTable_rowreq_ctx
  1102.  *        Pointer to the users context.
  1103.  *
  1104.  * @retval MFD_SUCCESS : success
  1105.  * @retval MFD_ERROR   : error
  1106.  */
  1107. int
  1108. inetCidrRouteTable_commit(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1109. {
  1110.     int             rc = MFD_SUCCESS;
  1111.     int             save_flags;
  1112.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_commit",
  1113.                 "calledn"));
  1114.     /** we should have a non-NULL pointer */
  1115.     netsnmp_assert(NULL != rowreq_ctx);
  1116.     /*
  1117.      * save flags, then clear until we actually do something
  1118.      */
  1119.     save_flags = rowreq_ctx->column_set_flags;
  1120.     rowreq_ctx->column_set_flags = 0;
  1121.     /*
  1122.      * commit inetCidrRouteTable data
  1123.      * 1) check the column's flag in save_flags to see if it was set.
  1124.      * 2) clear the flag when you handle that column
  1125.      * 3) set the column's flag in column_set_flags if it needs undo
  1126.      *    processing in case of a failure.
  1127.      */
  1128. #warning inetCidrRouteTable commit
  1129.     if (save_flags & FLAG_INETCIDRROUTEIFINDEX) {
  1130.         save_flags &= ~FLAG_INETCIDRROUTEIFINDEX;       /* clear inetCidrRouteIfIndex */
  1131.         /*
  1132.          * TODO:482:o: |-> commit column inetCidrRouteIfIndex.
  1133.          */
  1134.         rc = -1;
  1135.         if (-1 == rc) {
  1136.             snmp_log(LOG_ERR,
  1137.                      "inetCidrRouteTable column inetCidrRouteIfIndex commit failedn");
  1138.         } else {
  1139.             /*
  1140.              * set flag, in case we need to undo inetCidrRouteIfIndex
  1141.              */
  1142.             rowreq_ctx->column_set_flags |= FLAG_INETCIDRROUTEIFINDEX;
  1143.         }
  1144.     }
  1145.     if (save_flags & FLAG_INETCIDRROUTETYPE) {
  1146.         save_flags &= ~FLAG_INETCIDRROUTETYPE;  /* clear inetCidrRouteType */
  1147.         /*
  1148.          * TODO:482:o: |-> commit column inetCidrRouteType.
  1149.          */
  1150.         rc = -1;
  1151.         if (-1 == rc) {
  1152.             snmp_log(LOG_ERR,
  1153.                      "inetCidrRouteTable column inetCidrRouteType commit failedn");
  1154.         } else {
  1155.             /*
  1156.              * set flag, in case we need to undo inetCidrRouteType
  1157.              */
  1158.             rowreq_ctx->column_set_flags |= FLAG_INETCIDRROUTETYPE;
  1159.         }
  1160.     }
  1161.     if (save_flags & FLAG_INETCIDRROUTENEXTHOPAS) {
  1162.         save_flags &= ~FLAG_INETCIDRROUTENEXTHOPAS;     /* clear inetCidrRouteNextHopAS */
  1163.         /*
  1164.          * TODO:482:o: |-> commit column inetCidrRouteNextHopAS.
  1165.          */
  1166.         rc = -1;
  1167.         if (-1 == rc) {
  1168.             snmp_log(LOG_ERR,
  1169.                      "inetCidrRouteTable column inetCidrRouteNextHopAS commit failedn");
  1170.         } else {
  1171.             /*
  1172.              * set flag, in case we need to undo inetCidrRouteNextHopAS
  1173.              */
  1174.             rowreq_ctx->column_set_flags |= FLAG_INETCIDRROUTENEXTHOPAS;
  1175.         }
  1176.     }
  1177.     if (save_flags & FLAG_INETCIDRROUTEMETRIC1) {
  1178.         save_flags &= ~FLAG_INETCIDRROUTEMETRIC1;       /* clear inetCidrRouteMetric1 */
  1179.         /*
  1180.          * TODO:482:o: |-> commit column inetCidrRouteMetric1.
  1181.          */
  1182.         rc = -1;
  1183.         if (-1 == rc) {
  1184.             snmp_log(LOG_ERR,
  1185.                      "inetCidrRouteTable column inetCidrRouteMetric1 commit failedn");
  1186.         } else {
  1187.             /*
  1188.              * set flag, in case we need to undo inetCidrRouteMetric1
  1189.              */
  1190.             rowreq_ctx->column_set_flags |= FLAG_INETCIDRROUTEMETRIC1;
  1191.         }
  1192.     }
  1193.     if (save_flags & FLAG_INETCIDRROUTESTATUS) {
  1194.         save_flags &= ~FLAG_INETCIDRROUTESTATUS;        /* clear inetCidrRouteStatus */
  1195.         /*
  1196.          * TODO:482:o: |-> commit column inetCidrRouteStatus.
  1197.          */
  1198.         rc = -1;
  1199.         if (-1 == rc) {
  1200.             snmp_log(LOG_ERR,
  1201.                      "inetCidrRouteTable column inetCidrRouteStatus commit failedn");
  1202.         } else {
  1203.             /*
  1204.              * set flag, in case we need to undo inetCidrRouteStatus
  1205.              */
  1206.             rowreq_ctx->column_set_flags |= FLAG_INETCIDRROUTESTATUS;
  1207.         }
  1208.     }
  1209.     if (save_flags) {
  1210.         snmp_log(LOG_ERR, "unhandled columns (0x%x) in commitn",
  1211.                  save_flags);
  1212.         return MFD_ERROR;
  1213.     }
  1214.     return rc;
  1215. }                               /* inetCidrRouteTable_commit */
  1216. /**
  1217.  * undo commit new values.
  1218.  *
  1219.  * Should you need different behavior depending on which columns were
  1220.  * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
  1221.  * set. The definitions for the FLAG_* bits can be found in
  1222.  * inetCidrRouteTable.h.
  1223.  * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
  1224.  *
  1225.  * @param inetCidrRouteTable_rowreq_ctx
  1226.  *        Pointer to the users context.
  1227.  *
  1228.  * @retval MFD_SUCCESS : success
  1229.  * @retval MFD_ERROR   : error
  1230.  */
  1231. int
  1232. inetCidrRouteTable_undo_commit(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1233. {
  1234.     int             rc = MFD_SUCCESS;
  1235.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteTable_undo_commit", "calledn"));
  1236.     /** we should have a non-NULL pointer */
  1237.     netsnmp_assert(NULL != rowreq_ctx);
  1238.     /*
  1239.      * TODO:485:M: |-> Undo inetCidrRouteTable commit.
  1240.      * check the column's flag in rowreq_ctx->column_set_flags to see
  1241.      * if it was set during commit, then undo it.
  1242.      *
  1243.      * eg: if (rowreq_ctx->column_set_flags & FLAG_) {}
  1244.      */
  1245.     return rc;
  1246. }                               /* inetCidrRouteTable_undo_commit */
  1247. /*
  1248.  * TODO:420:r: Implement inetCidrRouteTable index validation.
  1249.  */
  1250. /*---------------------------------------------------------------------
  1251.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteDestType
  1252.  * inetCidrRouteDestType is subid 1 of inetCidrRouteEntry.
  1253.  * Its status is Current, and its access level is NoAccess.
  1254.  * OID: .1.3.6.1.2.1.4.24.7.1.1
  1255.  * Description:
  1256. The type of the inetCidrRouteDest address, as defined  
  1257.                 in the InetAddress MIB. 
  1258.                 Only those address types that may appear in an actual 
  1259.                 routing table are allowed as values of this object.
  1260.  *
  1261.  * Attributes:
  1262.  *   accessible 0     isscalar 0     enums  1      hasdefval 0
  1263.  *   readable   0     iscolumn 1     ranges 0      hashint   0
  1264.  *   settable   0
  1265.  *
  1266.  * Enum range: 5/8. Values:  unknown(0), ipv4(1), ipv6(2), ipv4z(3), ipv6z(4), dns(16)
  1267.  *
  1268.  * Its syntax is InetAddressType (based on perltype INTEGER)
  1269.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  1270.  *
  1271.  *
  1272.  *
  1273.  * NOTE: NODE inetCidrRouteDestType IS NOT ACCESSIBLE
  1274.  *
  1275.  *
  1276.  */
  1277. /**
  1278.  * check validity of inetCidrRouteDestType index portion
  1279.  *
  1280.  * @retval MFD_SUCCESS   : the incoming value is legal
  1281.  * @retval MFD_BAD_VALUE : the incoming value is NOT legal
  1282.  *
  1283.  * @note this is not the place to do any checks for the sanity
  1284.  *       of multiple indexes. Those types of checks should be done in the
  1285.  *       inetCidrRouteTable_validate_index() function.
  1286.  */
  1287. int
  1288. inetCidrRouteDestType_check_index(inetCidrRouteTable_rowreq_ctx *
  1289.                                   rowreq_ctx)
  1290. {
  1291.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteDestType_check_index", "calledn"));
  1292.     netsnmp_assert(NULL != rowreq_ctx);
  1293.     /*
  1294.      * TODO:426:M: |-> Check inetCidrRouteTable index inetCidrRouteDestType.
  1295.      * check that index value in the table context (rowreq_ctx)
  1296.      * for inetCidrRouteDestType is legal.
  1297.      */
  1298.     return MFD_SUCCESS;         /* inetCidrRouteDestType index ok */
  1299. }                               /* inetCidrRouteDestType_check_index */
  1300. /*---------------------------------------------------------------------
  1301.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteDest
  1302.  * inetCidrRouteDest is subid 2 of inetCidrRouteEntry.
  1303.  * Its status is Current, and its access level is NoAccess.
  1304.  * OID: .1.3.6.1.2.1.4.24.7.1.2
  1305.  * Description:
  1306. The destination IP address of this route. 
  1307.                 The type of this address is determined by the value of 
  1308.                 the inetCidrRouteDestType object. 
  1309.                 The values for the index objects inetCidrRouteDest and 
  1310.                 inetCidrRoutePfxLen must be consistent.  When the value 
  1311.                 of inetCidrRouteDest (excluding the zone index, if one 
  1312.                 is present) is x, then the bitwise logical-AND 
  1313.                 of x with the value of the mask formed from the 
  1314.                 corresponding index object inetCidrRoutePfxLen MUST be 
  1315.                 equal to x.  If not, then the index pair is not 
  1316.                 consistent and an inconsistentName error must be 
  1317.                 returned on SET or CREATE requests.
  1318.  *
  1319.  * Attributes:
  1320.  *   accessible 0     isscalar 0     enums  0      hasdefval 0
  1321.  *   readable   0     iscolumn 1     ranges 1      hashint   0
  1322.  *   settable   0
  1323.  *
  1324.  * Ranges:  0 - 255;
  1325.  *
  1326.  * Its syntax is InetAddress (based on perltype OCTETSTR)
  1327.  * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
  1328.  * This data type requires a length.  (Max 255)
  1329.  *
  1330.  *
  1331.  *
  1332.  * NOTE: NODE inetCidrRouteDest IS NOT ACCESSIBLE
  1333.  *
  1334.  *
  1335.  */
  1336. /**
  1337.  * check validity of inetCidrRouteDest index portion
  1338.  *
  1339.  * @retval MFD_SUCCESS   : the incoming value is legal
  1340.  * @retval MFD_BAD_VALUE : the incoming value is NOT legal
  1341.  *
  1342.  * @note this is not the place to do any checks for the sanity
  1343.  *       of multiple indexes. Those types of checks should be done in the
  1344.  *       inetCidrRouteTable_validate_index() function.
  1345.  */
  1346. int
  1347. inetCidrRouteDest_check_index(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1348. {
  1349.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteDest_check_index",
  1350.                 "calledn"));
  1351.     netsnmp_assert(NULL != rowreq_ctx);
  1352.     /*
  1353.      * TODO:426:M: |-> Check inetCidrRouteTable index inetCidrRouteDest.
  1354.      * check that index value in the table context (rowreq_ctx)
  1355.      * for inetCidrRouteDest is legal.
  1356.      */
  1357.     return MFD_SUCCESS;         /* inetCidrRouteDest index ok */
  1358. }                               /* inetCidrRouteDest_check_index */
  1359. /*---------------------------------------------------------------------
  1360.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRoutePfxLen
  1361.  * inetCidrRoutePfxLen is subid 3 of inetCidrRouteEntry.
  1362.  * Its status is Current, and its access level is NoAccess.
  1363.  * OID: .1.3.6.1.2.1.4.24.7.1.3
  1364.  * Description:
  1365. Indicates the number of leading one bits which form the  
  1366.                 mask to be logical-ANDed with the destination address  
  1367.                 before being compared to the value in the 
  1368.                 inetCidrRouteDest field. 
  1369.                 The values for the index objects inetCidrRouteDest and 
  1370.                 inetCidrRoutePfxLen must be consistent.  When the value 
  1371.                 of inetCidrRouteDest (excluding the zone index, if one 
  1372.                 is present) is x, then the bitwise logical-AND 
  1373.                 of x with the value of the mask formed from the 
  1374.                 corresponding index object inetCidrRoutePfxLen MUST be 
  1375.                 equal to x.  If not, then the index pair is not 
  1376.                 consistent and an inconsistentName error must be 
  1377.                 returned on SET or CREATE requests.
  1378.  *
  1379.  * Attributes:
  1380.  *   accessible 0     isscalar 0     enums  0      hasdefval 0
  1381.  *   readable   0     iscolumn 1     ranges 1      hashint   1
  1382.  *   settable   0
  1383.  *   hint: d
  1384.  *
  1385.  * Ranges:  0 - 2040;
  1386.  *
  1387.  * Its syntax is InetAddressPrefixLength (based on perltype UNSIGNED32)
  1388.  * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
  1389.  *
  1390.  *
  1391.  *
  1392.  * NOTE: NODE inetCidrRoutePfxLen IS NOT ACCESSIBLE
  1393.  *
  1394.  *
  1395.  */
  1396. /**
  1397.  * check validity of inetCidrRoutePfxLen index portion
  1398.  *
  1399.  * @retval MFD_SUCCESS   : the incoming value is legal
  1400.  * @retval MFD_BAD_VALUE : the incoming value is NOT legal
  1401.  *
  1402.  * @note this is not the place to do any checks for the sanity
  1403.  *       of multiple indexes. Those types of checks should be done in the
  1404.  *       inetCidrRouteTable_validate_index() function.
  1405.  */
  1406. int
  1407. inetCidrRoutePfxLen_check_index(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1408. {
  1409.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRoutePfxLen_check_index", "calledn"));
  1410.     netsnmp_assert(NULL != rowreq_ctx);
  1411.     /*
  1412.      * TODO:426:M: |-> Check inetCidrRouteTable index inetCidrRoutePfxLen.
  1413.      * check that index value in the table context (rowreq_ctx)
  1414.      * for inetCidrRoutePfxLen is legal.
  1415.      */
  1416.     return MFD_SUCCESS;         /* inetCidrRoutePfxLen index ok */
  1417. }                               /* inetCidrRoutePfxLen_check_index */
  1418. /*---------------------------------------------------------------------
  1419.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRoutePolicy
  1420.  * inetCidrRoutePolicy is subid 4 of inetCidrRouteEntry.
  1421.  * Its status is Current, and its access level is NoAccess.
  1422.  * OID: .1.3.6.1.2.1.4.24.7.1.4
  1423.  * Description:
  1424. This object is an opaque object without any defined 
  1425.                 semantics.  Its purpose is to serve as an additional 
  1426.                 index which may delineate between multiple entries to 
  1427.                 the same destination.  The value { 0 0 } shall be used 
  1428.                 as the default value for this object.
  1429.  *
  1430.  * Attributes:
  1431.  *   accessible 0     isscalar 0     enums  0      hasdefval 0
  1432.  *   readable   0     iscolumn 1     ranges 0      hashint   0
  1433.  *   settable   0
  1434.  *
  1435.  *
  1436.  * Its syntax is OBJECTID (based on perltype OBJECTID)
  1437.  * The net-snmp type is ASN_OBJECT_ID. The C type decl is oid (oid)
  1438.  * This data type requires a length.  (Max 2040)
  1439.  *
  1440.  *
  1441.  *
  1442.  * NOTE: NODE inetCidrRoutePolicy IS NOT ACCESSIBLE
  1443.  *
  1444.  *
  1445.  */
  1446. /**
  1447.  * check validity of inetCidrRoutePolicy index portion
  1448.  *
  1449.  * @retval MFD_SUCCESS   : the incoming value is legal
  1450.  * @retval MFD_BAD_VALUE : the incoming value is NOT legal
  1451.  *
  1452.  * @note this is not the place to do any checks for the sanity
  1453.  *       of multiple indexes. Those types of checks should be done in the
  1454.  *       inetCidrRouteTable_validate_index() function.
  1455.  */
  1456. int
  1457. inetCidrRoutePolicy_check_index(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1458. {
  1459.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRoutePolicy_check_index", "calledn"));
  1460.     netsnmp_assert(NULL != rowreq_ctx);
  1461.     /*
  1462.      * TODO:426:M: |-> Check inetCidrRouteTable index inetCidrRoutePolicy.
  1463.      * check that index value in the table context (rowreq_ctx)
  1464.      * for inetCidrRoutePolicy is legal.
  1465.      */
  1466.     return MFD_SUCCESS;         /* inetCidrRoutePolicy index ok */
  1467. }                               /* inetCidrRoutePolicy_check_index */
  1468. /*---------------------------------------------------------------------
  1469.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteNextHopType
  1470.  * inetCidrRouteNextHopType is subid 5 of inetCidrRouteEntry.
  1471.  * Its status is Current, and its access level is NoAccess.
  1472.  * OID: .1.3.6.1.2.1.4.24.7.1.5
  1473.  * Description:
  1474. The type of the inetCidrRouteNextHop address, as  
  1475.                 defined in the InetAddress MIB. 
  1476.                 Value should be set to unknown(0) for non-remote  
  1477.                 routes. 
  1478.                 Only those address types that may appear in an actual 
  1479.                 routing table are allowed as values of this object.
  1480.  *
  1481.  * Attributes:
  1482.  *   accessible 0     isscalar 0     enums  1      hasdefval 0
  1483.  *   readable   0     iscolumn 1     ranges 0      hashint   0
  1484.  *   settable   0
  1485.  *
  1486.  * Enum range: 5/8. Values:  unknown(0), ipv4(1), ipv6(2), ipv4z(3), ipv6z(4), dns(16)
  1487.  *
  1488.  * Its syntax is InetAddressType (based on perltype INTEGER)
  1489.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  1490.  *
  1491.  *
  1492.  *
  1493.  * NOTE: NODE inetCidrRouteNextHopType IS NOT ACCESSIBLE
  1494.  *
  1495.  *
  1496.  */
  1497. /**
  1498.  * check validity of inetCidrRouteNextHopType index portion
  1499.  *
  1500.  * @retval MFD_SUCCESS   : the incoming value is legal
  1501.  * @retval MFD_BAD_VALUE : the incoming value is NOT legal
  1502.  *
  1503.  * @note this is not the place to do any checks for the sanity
  1504.  *       of multiple indexes. Those types of checks should be done in the
  1505.  *       inetCidrRouteTable_validate_index() function.
  1506.  */
  1507. int
  1508. inetCidrRouteNextHopType_check_index(inetCidrRouteTable_rowreq_ctx *
  1509.                                      rowreq_ctx)
  1510. {
  1511.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHopType_check_index", "calledn"));
  1512.     netsnmp_assert(NULL != rowreq_ctx);
  1513.     /*
  1514.      * TODO:426:M: |-> Check inetCidrRouteTable index inetCidrRouteNextHopType.
  1515.      * check that index value in the table context (rowreq_ctx)
  1516.      * for inetCidrRouteNextHopType is legal.
  1517.      */
  1518.     return MFD_SUCCESS;         /* inetCidrRouteNextHopType index ok */
  1519. }                               /* inetCidrRouteNextHopType_check_index */
  1520. /*---------------------------------------------------------------------
  1521.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteNextHop
  1522.  * inetCidrRouteNextHop is subid 6 of inetCidrRouteEntry.
  1523.  * Its status is Current, and its access level is NoAccess.
  1524.  * OID: .1.3.6.1.2.1.4.24.7.1.6
  1525.  * Description:
  1526. On remote routes, the address of the next system en              
  1527.                 route.  For non-remote routes, a zero length string. 
  1528.                 The type of this address is determined by the value of 
  1529.                 the inetCidrRouteNextHopType object.
  1530.  *
  1531.  * Attributes:
  1532.  *   accessible 0     isscalar 0     enums  0      hasdefval 0
  1533.  *   readable   0     iscolumn 1     ranges 1      hashint   0
  1534.  *   settable   0
  1535.  *
  1536.  * Ranges:  0 - 255;
  1537.  *
  1538.  * Its syntax is InetAddress (based on perltype OCTETSTR)
  1539.  * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
  1540.  * This data type requires a length.  (Max 255)
  1541.  *
  1542.  *
  1543.  *
  1544.  * NOTE: NODE inetCidrRouteNextHop IS NOT ACCESSIBLE
  1545.  *
  1546.  *
  1547.  */
  1548. /**
  1549.  * check validity of inetCidrRouteNextHop index portion
  1550.  *
  1551.  * @retval MFD_SUCCESS   : the incoming value is legal
  1552.  * @retval MFD_BAD_VALUE : the incoming value is NOT legal
  1553.  *
  1554.  * @note this is not the place to do any checks for the sanity
  1555.  *       of multiple indexes. Those types of checks should be done in the
  1556.  *       inetCidrRouteTable_validate_index() function.
  1557.  */
  1558. int
  1559. inetCidrRouteNextHop_check_index(inetCidrRouteTable_rowreq_ctx *
  1560.                                  rowreq_ctx)
  1561. {
  1562.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHop_check_index", "calledn"));
  1563.     netsnmp_assert(NULL != rowreq_ctx);
  1564.     /*
  1565.      * TODO:426:M: |-> Check inetCidrRouteTable index inetCidrRouteNextHop.
  1566.      * check that index value in the table context (rowreq_ctx)
  1567.      * for inetCidrRouteNextHop is legal.
  1568.      */
  1569.     return MFD_SUCCESS;         /* inetCidrRouteNextHop index ok */
  1570. }                               /* inetCidrRouteNextHop_check_index */
  1571. /*
  1572.  * TODO:440:M: Implement inetCidrRouteTable node value checks.
  1573.  * TODO:450:M: Implement inetCidrRouteTable undo functions.
  1574.  * TODO:460:M: Implement inetCidrRouteTable set functions.
  1575.  * TODO:480:M: Implement inetCidrRouteTable commit functions.
  1576.  */
  1577. /*---------------------------------------------------------------------
  1578.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteIfIndex
  1579.  * inetCidrRouteIfIndex is subid 7 of inetCidrRouteEntry.
  1580.  * Its status is Current, and its access level is Create.
  1581.  * OID: .1.3.6.1.2.1.4.24.7.1.7
  1582.  * Description:
  1583. The ifIndex value which identifies the local interface 
  1584.                 through which the next hop of this route should be  
  1585.                 reached.  A value of 0 is valid and represents the 
  1586.                 scenario where no interface is specified.
  1587.  *
  1588.  * Attributes:
  1589.  *   accessible 1     isscalar 0     enums  0      hasdefval 0
  1590.  *   readable   1     iscolumn 1     ranges 1      hashint   1
  1591.  *   settable   1
  1592.  *   hint: d
  1593.  *
  1594.  * Ranges:  0 - 2147483647;
  1595.  *
  1596.  * Its syntax is InterfaceIndexOrZero (based on perltype INTEGER32)
  1597.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  1598.  */
  1599. /**
  1600.  * Check that the proposed new value is potentially valid.
  1601.  *
  1602.  * @param rowreq_ctx
  1603.  *        Pointer to the row request context.
  1604.  * @param inetCidrRouteIfIndex_val
  1605.  *        A long containing the new value.
  1606.  *
  1607.  * @retval MFD_SUCCESS        : incoming value is legal
  1608.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  1609.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  1610.  *
  1611.  * This is the place to check for requirements that are not
  1612.  * expressed in the mib syntax (for example, a requirement that
  1613.  * is detailed in the description for an object).
  1614.  *
  1615.  * You should check that the requested change between the undo value and the
  1616.  * new value is legal (ie, the transistion from one value to another
  1617.  * is legal).
  1618.  *      
  1619.  *@note
  1620.  * This check is only to determine if the new value
  1621.  * is b potentially valid. This is the first check of many, and
  1622.  * is one of the simplest ones.
  1623.  * 
  1624.  *@note
  1625.  * this is not the place to do any checks for values
  1626.  * which depend on some other value in the mib. Those
  1627.  * types of checks should be done in the
  1628.  * inetCidrRouteTable_check_dependencies() function.
  1629.  *
  1630.  * The following checks have already been done for you:
  1631.  *    The syntax is ASN_INTEGER
  1632.  *    The value is in (one of) the range set(s):  0 - 2147483647
  1633.  *
  1634.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  1635.  *
  1636.  */
  1637. int
  1638. inetCidrRouteIfIndex_check_value(inetCidrRouteTable_rowreq_ctx *
  1639.                                  rowreq_ctx, long inetCidrRouteIfIndex_val)
  1640. {
  1641.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteIfIndex_check_value", "calledn"));
  1642.     /** should never get a NULL pointer */
  1643.     netsnmp_assert(NULL != rowreq_ctx);
  1644.     /*
  1645.      * TODO:441:o: |-> Check for valid inetCidrRouteIfIndex value.
  1646.      */
  1647.     return MFD_SUCCESS;         /* inetCidrRouteIfIndex value not illegal */
  1648. }                               /* inetCidrRouteIfIndex_check_value */
  1649. /**
  1650.  * Save old value information
  1651.  *
  1652.  * @param rowreq_ctx
  1653.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  1654.  *
  1655.  * @retval MFD_SUCCESS : success
  1656.  * @retval MFD_ERROR   : error. set will fail.
  1657.  *
  1658.  * This function will be called after the table level undo setup function
  1659.  * inetCidrRouteTable_undo_setup has been called.
  1660.  *
  1661.  *@note
  1662.  * this function will only be called if a new value is set for this column.
  1663.  *
  1664.  * If there is any setup specific to a particular column (e.g. allocating
  1665.  * memory for a string), you should do that setup in this function, so it
  1666.  * won't be done unless it is necessary.
  1667.  */
  1668. int
  1669. inetCidrRouteIfIndex_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1670. {
  1671.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteIfIndex_undo_setup", "calledn"));
  1672.     /** should never get a NULL pointer */
  1673.     netsnmp_assert(NULL != rowreq_ctx);
  1674.     /*
  1675.      * TODO:455:o: |-> Setup inetCidrRouteIfIndex undo.
  1676.      */
  1677.     /*
  1678.      * copy inetCidrRouteIfIndex data
  1679.      * set rowreq_ctx->undo->inetCidrRouteIfIndex from rowreq_ctx->data->inetCidrRouteIfIndex
  1680.      */
  1681.     return MFD_SUCCESS;
  1682. }                               /* inetCidrRouteIfIndex_undo_setup */
  1683. /**
  1684.  * Set the new value.
  1685.  *
  1686.  * @param rowreq_ctx
  1687.  *        Pointer to the users context. You should know how to
  1688.  *        manipulate the value from this object.
  1689.  * @param inetCidrRouteIfIndex_val
  1690.  *        A long containing the new value.
  1691.  */
  1692. int
  1693. inetCidrRouteIfIndex_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  1694.                          long inetCidrRouteIfIndex_val)
  1695. {
  1696.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteIfIndex_set",
  1697.                 "calledn"));
  1698.     /** should never get a NULL pointer */
  1699.     netsnmp_assert(NULL != rowreq_ctx);
  1700.     /*
  1701.      * TODO:461:M: |-> Set inetCidrRouteIfIndex value.
  1702.      * set inetCidrRouteIfIndex value in rowreq_ctx->data
  1703.      */
  1704.     return MFD_SUCCESS;
  1705. }                               /* inetCidrRouteIfIndex_set */
  1706. /**
  1707.  * undo the previous set.
  1708.  *
  1709.  * @param rowreq_ctx
  1710.  *        Pointer to the users context.
  1711.  */
  1712. int
  1713. inetCidrRouteIfIndex_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1714. {
  1715.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteIfIndex_undo",
  1716.                 "calledn"));
  1717.     netsnmp_assert(NULL != rowreq_ctx);
  1718.     /*
  1719.      * TODO:456:o: |-> Clean up inetCidrRouteIfIndex undo.
  1720.      */
  1721.     /*
  1722.      * copy inetCidrRouteIfIndex data
  1723.      * set rowreq_ctx->data->inetCidrRouteIfIndex from rowreq_ctx->undo->inetCidrRouteIfIndex
  1724.      */
  1725.     return MFD_SUCCESS;
  1726. }                               /* inetCidrRouteIfIndex_undo */
  1727. /*---------------------------------------------------------------------
  1728.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteType
  1729.  * inetCidrRouteType is subid 8 of inetCidrRouteEntry.
  1730.  * Its status is Current, and its access level is Create.
  1731.  * OID: .1.3.6.1.2.1.4.24.7.1.8
  1732.  * Description:
  1733. The type of route.  Note that local(3) refers to a  
  1734.                 route for which the next hop is the final destination;  
  1735.                 remote(4)refers to a route for which the next hop is  
  1736.                 not the final destination. 
  1737.                 Routes which do not result in traffic forwarding or 
  1738.                 rejection should not be displayed even if the  
  1739.                 implementation keeps them stored internally. 
  1740.                 reject(2) refers to a route which, if matched, discards  
  1741.                 the message as unreachable and returns a notification  
  1742.                 (e.g. ICMP error) to the message sender.  This is used  
  1743.                 in some protocols as a means of correctly aggregating  
  1744.                 routes. 
  1745.                 blackhole(5) refers to a route which, if matched,  
  1746.                 discards the message silently.
  1747.  *
  1748.  * Attributes:
  1749.  *   accessible 1     isscalar 0     enums  1      hasdefval 0
  1750.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  1751.  *   settable   1
  1752.  *
  1753.  * Enum range: 3/8. Values:  other(1), reject(2), local(3), remote(4), blackhole(5)
  1754.  *
  1755.  * Its syntax is INTEGER (based on perltype INTEGER)
  1756.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  1757.  */
  1758. /**
  1759.  * Check that the proposed new value is potentially valid.
  1760.  *
  1761.  * @param rowreq_ctx
  1762.  *        Pointer to the row request context.
  1763.  * @param inetCidrRouteType_val
  1764.  *        A long containing the new value.
  1765.  *
  1766.  * @retval MFD_SUCCESS        : incoming value is legal
  1767.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  1768.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  1769.  *
  1770.  * This is the place to check for requirements that are not
  1771.  * expressed in the mib syntax (for example, a requirement that
  1772.  * is detailed in the description for an object).
  1773.  *
  1774.  * You should check that the requested change between the undo value and the
  1775.  * new value is legal (ie, the transistion from one value to another
  1776.  * is legal).
  1777.  *      
  1778.  *@note
  1779.  * This check is only to determine if the new value
  1780.  * is b potentially valid. This is the first check of many, and
  1781.  * is one of the simplest ones.
  1782.  * 
  1783.  *@note
  1784.  * this is not the place to do any checks for values
  1785.  * which depend on some other value in the mib. Those
  1786.  * types of checks should be done in the
  1787.  * inetCidrRouteTable_check_dependencies() function.
  1788.  *
  1789.  * The following checks have already been done for you:
  1790.  *    The syntax is ASN_INTEGER
  1791.  *    The value is one of  other(1), reject(2), local(3), remote(4), blackhole(5)
  1792.  *
  1793.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  1794.  *
  1795.  */
  1796. int
  1797. inetCidrRouteType_check_value(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  1798.                               u_long inetCidrRouteType_val)
  1799. {
  1800.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteType_check_value",
  1801.                 "calledn"));
  1802.     /** should never get a NULL pointer */
  1803.     netsnmp_assert(NULL != rowreq_ctx);
  1804.     /*
  1805.      * TODO:441:o: |-> Check for valid inetCidrRouteType value.
  1806.      */
  1807.     return MFD_SUCCESS;         /* inetCidrRouteType value not illegal */
  1808. }                               /* inetCidrRouteType_check_value */
  1809. /**
  1810.  * Save old value information
  1811.  *
  1812.  * @param rowreq_ctx
  1813.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  1814.  *
  1815.  * @retval MFD_SUCCESS : success
  1816.  * @retval MFD_ERROR   : error. set will fail.
  1817.  *
  1818.  * This function will be called after the table level undo setup function
  1819.  * inetCidrRouteTable_undo_setup has been called.
  1820.  *
  1821.  *@note
  1822.  * this function will only be called if a new value is set for this column.
  1823.  *
  1824.  * If there is any setup specific to a particular column (e.g. allocating
  1825.  * memory for a string), you should do that setup in this function, so it
  1826.  * won't be done unless it is necessary.
  1827.  */
  1828. int
  1829. inetCidrRouteType_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1830. {
  1831.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteType_undo_setup",
  1832.                 "calledn"));
  1833.     /** should never get a NULL pointer */
  1834.     netsnmp_assert(NULL != rowreq_ctx);
  1835.     /*
  1836.      * TODO:455:o: |-> Setup inetCidrRouteType undo.
  1837.      */
  1838.     /*
  1839.      * copy inetCidrRouteType data
  1840.      * set rowreq_ctx->undo->inetCidrRouteType from rowreq_ctx->data->inetCidrRouteType
  1841.      */
  1842.     return MFD_SUCCESS;
  1843. }                               /* inetCidrRouteType_undo_setup */
  1844. /**
  1845.  * Set the new value.
  1846.  *
  1847.  * @param rowreq_ctx
  1848.  *        Pointer to the users context. You should know how to
  1849.  *        manipulate the value from this object.
  1850.  * @param inetCidrRouteType_val
  1851.  *        A long containing the new value.
  1852.  */
  1853. int
  1854. inetCidrRouteType_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  1855.                       u_long inetCidrRouteType_val)
  1856. {
  1857.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteType_set",
  1858.                 "calledn"));
  1859.     /** should never get a NULL pointer */
  1860.     netsnmp_assert(NULL != rowreq_ctx);
  1861.     /*
  1862.      * TODO:461:M: |-> Set inetCidrRouteType value.
  1863.      * set inetCidrRouteType value in rowreq_ctx->data
  1864.      */
  1865.     return MFD_SUCCESS;
  1866. }                               /* inetCidrRouteType_set */
  1867. /**
  1868.  * undo the previous set.
  1869.  *
  1870.  * @param rowreq_ctx
  1871.  *        Pointer to the users context.
  1872.  */
  1873. int
  1874. inetCidrRouteType_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  1875. {
  1876.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteType_undo",
  1877.                 "calledn"));
  1878.     netsnmp_assert(NULL != rowreq_ctx);
  1879.     /*
  1880.      * TODO:456:o: |-> Clean up inetCidrRouteType undo.
  1881.      */
  1882.     /*
  1883.      * copy inetCidrRouteType data
  1884.      * set rowreq_ctx->data->inetCidrRouteType from rowreq_ctx->undo->inetCidrRouteType
  1885.      */
  1886.     return MFD_SUCCESS;
  1887. }                               /* inetCidrRouteType_undo */
  1888. /*---------------------------------------------------------------------
  1889.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteNextHopAS
  1890.  * inetCidrRouteNextHopAS is subid 11 of inetCidrRouteEntry.
  1891.  * Its status is Current, and its access level is Create.
  1892.  * OID: .1.3.6.1.2.1.4.24.7.1.11
  1893.  * Description:
  1894. The Autonomous System Number of the Next Hop.  The  
  1895.                 semantics of this object are determined by the routing- 
  1896.                 protocol specified in the route's inetCidrRouteProto  
  1897.                 value. When this object is unknown or not relevant its  
  1898.                 value should be set to zero.
  1899.  *
  1900.  * Attributes:
  1901.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  1902.  *   readable   1     iscolumn 1     ranges 0      hashint   1
  1903.  *   settable   1
  1904.  *   defval: 0
  1905.  *   hint: d
  1906.  *
  1907.  *
  1908.  * Its syntax is InetAutonomousSystemNumber (based on perltype UNSIGNED32)
  1909.  * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
  1910.  */
  1911. /**
  1912.  * Check that the proposed new value is potentially valid.
  1913.  *
  1914.  * @param rowreq_ctx
  1915.  *        Pointer to the row request context.
  1916.  * @param inetCidrRouteNextHopAS_val
  1917.  *        A u_long containing the new value.
  1918.  *
  1919.  * @retval MFD_SUCCESS        : incoming value is legal
  1920.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  1921.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  1922.  *
  1923.  * This is the place to check for requirements that are not
  1924.  * expressed in the mib syntax (for example, a requirement that
  1925.  * is detailed in the description for an object).
  1926.  *
  1927.  * You should check that the requested change between the undo value and the
  1928.  * new value is legal (ie, the transistion from one value to another
  1929.  * is legal).
  1930.  *      
  1931.  *@note
  1932.  * This check is only to determine if the new value
  1933.  * is b potentially valid. This is the first check of many, and
  1934.  * is one of the simplest ones.
  1935.  * 
  1936.  *@note
  1937.  * this is not the place to do any checks for values
  1938.  * which depend on some other value in the mib. Those
  1939.  * types of checks should be done in the
  1940.  * inetCidrRouteTable_check_dependencies() function.
  1941.  *
  1942.  * The following checks have already been done for you:
  1943.  *    The syntax is ASN_UNSIGNED
  1944.  *
  1945.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  1946.  *
  1947.  */
  1948. int
  1949. inetCidrRouteNextHopAS_check_value(inetCidrRouteTable_rowreq_ctx *
  1950.                                    rowreq_ctx,
  1951.                                    u_long inetCidrRouteNextHopAS_val)
  1952. {
  1953.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHopAS_check_value", "calledn"));
  1954.     /** should never get a NULL pointer */
  1955.     netsnmp_assert(NULL != rowreq_ctx);
  1956.     /*
  1957.      * TODO:441:o: |-> Check for valid inetCidrRouteNextHopAS value.
  1958.      */
  1959.     return MFD_SUCCESS;         /* inetCidrRouteNextHopAS value not illegal */
  1960. }                               /* inetCidrRouteNextHopAS_check_value */
  1961. /**
  1962.  * Save old value information
  1963.  *
  1964.  * @param rowreq_ctx
  1965.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  1966.  *
  1967.  * @retval MFD_SUCCESS : success
  1968.  * @retval MFD_ERROR   : error. set will fail.
  1969.  *
  1970.  * This function will be called after the table level undo setup function
  1971.  * inetCidrRouteTable_undo_setup has been called.
  1972.  *
  1973.  *@note
  1974.  * this function will only be called if a new value is set for this column.
  1975.  *
  1976.  * If there is any setup specific to a particular column (e.g. allocating
  1977.  * memory for a string), you should do that setup in this function, so it
  1978.  * won't be done unless it is necessary.
  1979.  */
  1980. int
  1981. inetCidrRouteNextHopAS_undo_setup(inetCidrRouteTable_rowreq_ctx *
  1982.                                   rowreq_ctx)
  1983. {
  1984.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHopAS_undo_setup", "calledn"));
  1985.     /** should never get a NULL pointer */
  1986.     netsnmp_assert(NULL != rowreq_ctx);
  1987.     /*
  1988.      * TODO:455:o: |-> Setup inetCidrRouteNextHopAS undo.
  1989.      */
  1990.     /*
  1991.      * copy inetCidrRouteNextHopAS data
  1992.      * set rowreq_ctx->undo->inetCidrRouteNextHopAS from rowreq_ctx->data->inetCidrRouteNextHopAS
  1993.      */
  1994.     return MFD_SUCCESS;
  1995. }                               /* inetCidrRouteNextHopAS_undo_setup */
  1996. /**
  1997.  * Set the new value.
  1998.  *
  1999.  * @param rowreq_ctx
  2000.  *        Pointer to the users context. You should know how to
  2001.  *        manipulate the value from this object.
  2002.  * @param inetCidrRouteNextHopAS_val
  2003.  *        A u_long containing the new value.
  2004.  */
  2005. int
  2006. inetCidrRouteNextHopAS_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2007.                            u_long inetCidrRouteNextHopAS_val)
  2008. {
  2009.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHopAS_set",
  2010.                 "calledn"));
  2011.     /** should never get a NULL pointer */
  2012.     netsnmp_assert(NULL != rowreq_ctx);
  2013.     /*
  2014.      * TODO:461:M: |-> Set inetCidrRouteNextHopAS value.
  2015.      * set inetCidrRouteNextHopAS value in rowreq_ctx->data
  2016.      */
  2017.     return MFD_SUCCESS;
  2018. }                               /* inetCidrRouteNextHopAS_set */
  2019. /**
  2020.  * undo the previous set.
  2021.  *
  2022.  * @param rowreq_ctx
  2023.  *        Pointer to the users context.
  2024.  */
  2025. int
  2026. inetCidrRouteNextHopAS_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2027. {
  2028.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteNextHopAS_undo",
  2029.                 "calledn"));
  2030.     netsnmp_assert(NULL != rowreq_ctx);
  2031.     /*
  2032.      * TODO:456:o: |-> Clean up inetCidrRouteNextHopAS undo.
  2033.      */
  2034.     /*
  2035.      * copy inetCidrRouteNextHopAS data
  2036.      * set rowreq_ctx->data->inetCidrRouteNextHopAS from rowreq_ctx->undo->inetCidrRouteNextHopAS
  2037.      */
  2038.     return MFD_SUCCESS;
  2039. }                               /* inetCidrRouteNextHopAS_undo */
  2040. /*---------------------------------------------------------------------
  2041.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric1
  2042.  * inetCidrRouteMetric1 is subid 12 of inetCidrRouteEntry.
  2043.  * Its status is Current, and its access level is Create.
  2044.  * OID: .1.3.6.1.2.1.4.24.7.1.12
  2045.  * Description:
  2046. The primary routing metric for this route.  The  
  2047.                 semantics of this metric are determined by the routing- 
  2048.                 protocol specified in the route's inetCidrRouteProto  
  2049.                 value.  If this metric is not used, its value should be  
  2050.                 set to -1.
  2051.  *
  2052.  * Attributes:
  2053.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  2054.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  2055.  *   settable   1
  2056.  *   defval: -1
  2057.  *
  2058.  *
  2059.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  2060.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  2061.  */
  2062. /**
  2063.  * Check that the proposed new value is potentially valid.
  2064.  *
  2065.  * @param rowreq_ctx
  2066.  *        Pointer to the row request context.
  2067.  * @param inetCidrRouteMetric1_val
  2068.  *        A long containing the new value.
  2069.  *
  2070.  * @retval MFD_SUCCESS        : incoming value is legal
  2071.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  2072.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  2073.  *
  2074.  * This is the place to check for requirements that are not
  2075.  * expressed in the mib syntax (for example, a requirement that
  2076.  * is detailed in the description for an object).
  2077.  *
  2078.  * You should check that the requested change between the undo value and the
  2079.  * new value is legal (ie, the transistion from one value to another
  2080.  * is legal).
  2081.  *      
  2082.  *@note
  2083.  * This check is only to determine if the new value
  2084.  * is b potentially valid. This is the first check of many, and
  2085.  * is one of the simplest ones.
  2086.  * 
  2087.  *@note
  2088.  * this is not the place to do any checks for values
  2089.  * which depend on some other value in the mib. Those
  2090.  * types of checks should be done in the
  2091.  * inetCidrRouteTable_check_dependencies() function.
  2092.  *
  2093.  * The following checks have already been done for you:
  2094.  *    The syntax is ASN_INTEGER
  2095.  *
  2096.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  2097.  *
  2098.  */
  2099. int
  2100. inetCidrRouteMetric1_check_value(inetCidrRouteTable_rowreq_ctx *
  2101.                                  rowreq_ctx, long inetCidrRouteMetric1_val)
  2102. {
  2103.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric1_check_value", "calledn"));
  2104.     /** should never get a NULL pointer */
  2105.     netsnmp_assert(NULL != rowreq_ctx);
  2106.     /*
  2107.      * TODO:441:o: |-> Check for valid inetCidrRouteMetric1 value.
  2108.      */
  2109.     return MFD_SUCCESS;         /* inetCidrRouteMetric1 value not illegal */
  2110. }                               /* inetCidrRouteMetric1_check_value */
  2111. /**
  2112.  * Save old value information
  2113.  *
  2114.  * @param rowreq_ctx
  2115.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  2116.  *
  2117.  * @retval MFD_SUCCESS : success
  2118.  * @retval MFD_ERROR   : error. set will fail.
  2119.  *
  2120.  * This function will be called after the table level undo setup function
  2121.  * inetCidrRouteTable_undo_setup has been called.
  2122.  *
  2123.  *@note
  2124.  * this function will only be called if a new value is set for this column.
  2125.  *
  2126.  * If there is any setup specific to a particular column (e.g. allocating
  2127.  * memory for a string), you should do that setup in this function, so it
  2128.  * won't be done unless it is necessary.
  2129.  */
  2130. int
  2131. inetCidrRouteMetric1_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2132. {
  2133.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric1_undo_setup", "calledn"));
  2134.     /** should never get a NULL pointer */
  2135.     netsnmp_assert(NULL != rowreq_ctx);
  2136.     /*
  2137.      * TODO:455:o: |-> Setup inetCidrRouteMetric1 undo.
  2138.      */
  2139.     /*
  2140.      * copy inetCidrRouteMetric1 data
  2141.      * set rowreq_ctx->undo->inetCidrRouteMetric1 from rowreq_ctx->data->inetCidrRouteMetric1
  2142.      */
  2143.     return MFD_SUCCESS;
  2144. }                               /* inetCidrRouteMetric1_undo_setup */
  2145. /**
  2146.  * Set the new value.
  2147.  *
  2148.  * @param rowreq_ctx
  2149.  *        Pointer to the users context. You should know how to
  2150.  *        manipulate the value from this object.
  2151.  * @param inetCidrRouteMetric1_val
  2152.  *        A long containing the new value.
  2153.  */
  2154. int
  2155. inetCidrRouteMetric1_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2156.                          long inetCidrRouteMetric1_val)
  2157. {
  2158.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric1_set",
  2159.                 "calledn"));
  2160.     /** should never get a NULL pointer */
  2161.     netsnmp_assert(NULL != rowreq_ctx);
  2162.     /*
  2163.      * TODO:461:M: |-> Set inetCidrRouteMetric1 value.
  2164.      * set inetCidrRouteMetric1 value in rowreq_ctx->data
  2165.      */
  2166.     return MFD_SUCCESS;
  2167. }                               /* inetCidrRouteMetric1_set */
  2168. /**
  2169.  * undo the previous set.
  2170.  *
  2171.  * @param rowreq_ctx
  2172.  *        Pointer to the users context.
  2173.  */
  2174. int
  2175. inetCidrRouteMetric1_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2176. {
  2177.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric1_undo",
  2178.                 "calledn"));
  2179.     netsnmp_assert(NULL != rowreq_ctx);
  2180.     /*
  2181.      * TODO:456:o: |-> Clean up inetCidrRouteMetric1 undo.
  2182.      */
  2183.     /*
  2184.      * copy inetCidrRouteMetric1 data
  2185.      * set rowreq_ctx->data->inetCidrRouteMetric1 from rowreq_ctx->undo->inetCidrRouteMetric1
  2186.      */
  2187.     return MFD_SUCCESS;
  2188. }                               /* inetCidrRouteMetric1_undo */
  2189. /*---------------------------------------------------------------------
  2190.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric2
  2191.  * inetCidrRouteMetric2 is subid 13 of inetCidrRouteEntry.
  2192.  * Its status is Current, and its access level is Create.
  2193.  * OID: .1.3.6.1.2.1.4.24.7.1.13
  2194.  * Description:
  2195. An alternate routing metric for this route.  The  
  2196.                 semantics of this metric are determined by the routing- 
  2197.                 protocol specified in the route's inetCidrRouteProto  
  2198.                 value.  If this metric is not used, its value should be  
  2199.                 set to -1.
  2200.  *
  2201.  * Attributes:
  2202.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  2203.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  2204.  *   settable   1
  2205.  *   defval: -1
  2206.  *
  2207.  *
  2208.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  2209.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  2210.  */
  2211. /**
  2212.  * Check that the proposed new value is potentially valid.
  2213.  *
  2214.  * @param rowreq_ctx
  2215.  *        Pointer to the row request context.
  2216.  * @param inetCidrRouteMetric2_val
  2217.  *        A long containing the new value.
  2218.  *
  2219.  * @retval MFD_SUCCESS        : incoming value is legal
  2220.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  2221.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  2222.  *
  2223.  * This is the place to check for requirements that are not
  2224.  * expressed in the mib syntax (for example, a requirement that
  2225.  * is detailed in the description for an object).
  2226.  *
  2227.  * You should check that the requested change between the undo value and the
  2228.  * new value is legal (ie, the transistion from one value to another
  2229.  * is legal).
  2230.  *      
  2231.  *@note
  2232.  * This check is only to determine if the new value
  2233.  * is b potentially valid. This is the first check of many, and
  2234.  * is one of the simplest ones.
  2235.  * 
  2236.  *@note
  2237.  * this is not the place to do any checks for values
  2238.  * which depend on some other value in the mib. Those
  2239.  * types of checks should be done in the
  2240.  * inetCidrRouteTable_check_dependencies() function.
  2241.  *
  2242.  * The following checks have already been done for you:
  2243.  *    The syntax is ASN_INTEGER
  2244.  *
  2245.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  2246.  *
  2247.  */
  2248. int
  2249. inetCidrRouteMetric2_check_value(inetCidrRouteTable_rowreq_ctx *
  2250.                                  rowreq_ctx, long inetCidrRouteMetric2_val)
  2251. {
  2252.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric2_check_value", "calledn"));
  2253.     /** should never get a NULL pointer */
  2254.     netsnmp_assert(NULL != rowreq_ctx);
  2255.     /*
  2256.      * TODO:441:o: |-> Check for valid inetCidrRouteMetric2 value.
  2257.      */
  2258.     /*
  2259.      * does any os use metrics 2-5? If so, update this to deal with it.
  2260.      */
  2261.     return MFD_NOT_VALID_EVER;
  2262. }                               /* inetCidrRouteMetric2_check_value */
  2263. /**
  2264.  * Save old value information
  2265.  *
  2266.  * @param rowreq_ctx
  2267.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  2268.  *
  2269.  * @retval MFD_SUCCESS : success
  2270.  * @retval MFD_ERROR   : error. set will fail.
  2271.  *
  2272.  * This function will be called after the table level undo setup function
  2273.  * inetCidrRouteTable_undo_setup has been called.
  2274.  *
  2275.  *@note
  2276.  * this function will only be called if a new value is set for this column.
  2277.  *
  2278.  * If there is any setup specific to a particular column (e.g. allocating
  2279.  * memory for a string), you should do that setup in this function, so it
  2280.  * won't be done unless it is necessary.
  2281.  */
  2282. int
  2283. inetCidrRouteMetric2_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2284. {
  2285.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric2_undo_setup", "calledn"));
  2286.     /** should never get a NULL pointer */
  2287.     netsnmp_assert(NULL != rowreq_ctx);
  2288.     /*
  2289.      * TODO:455:o: |-> Setup inetCidrRouteMetric2 undo.
  2290.      */
  2291.     /*
  2292.      * copy inetCidrRouteMetric2 data
  2293.      * set rowreq_ctx->undo->inetCidrRouteMetric2 from rowreq_ctx->data->inetCidrRouteMetric2
  2294.      */
  2295.     return MFD_SUCCESS;
  2296. }                               /* inetCidrRouteMetric2_undo_setup */
  2297. /**
  2298.  * Set the new value.
  2299.  *
  2300.  * @param rowreq_ctx
  2301.  *        Pointer to the users context. You should know how to
  2302.  *        manipulate the value from this object.
  2303.  * @param inetCidrRouteMetric2_val
  2304.  *        A long containing the new value.
  2305.  */
  2306. int
  2307. inetCidrRouteMetric2_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2308.                          long inetCidrRouteMetric2_val)
  2309. {
  2310.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric2_set",
  2311.                 "calledn"));
  2312.     /** should never get a NULL pointer */
  2313.     netsnmp_assert(NULL != rowreq_ctx);
  2314.     /*
  2315.      * TODO:461:M: |-> Set inetCidrRouteMetric2 value.
  2316.      * set inetCidrRouteMetric2 value in rowreq_ctx->data
  2317.      */
  2318.     return MFD_SUCCESS;
  2319. }                               /* inetCidrRouteMetric2_set */
  2320. /**
  2321.  * undo the previous set.
  2322.  *
  2323.  * @param rowreq_ctx
  2324.  *        Pointer to the users context.
  2325.  */
  2326. int
  2327. inetCidrRouteMetric2_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2328. {
  2329.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric2_undo",
  2330.                 "calledn"));
  2331.     netsnmp_assert(NULL != rowreq_ctx);
  2332.     /*
  2333.      * TODO:456:o: |-> Clean up inetCidrRouteMetric2 undo.
  2334.      */
  2335.     /*
  2336.      * copy inetCidrRouteMetric2 data
  2337.      * set rowreq_ctx->data->inetCidrRouteMetric2 from rowreq_ctx->undo->inetCidrRouteMetric2
  2338.      */
  2339.     return MFD_SUCCESS;
  2340. }                               /* inetCidrRouteMetric2_undo */
  2341. /*---------------------------------------------------------------------
  2342.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric3
  2343.  * inetCidrRouteMetric3 is subid 14 of inetCidrRouteEntry.
  2344.  * Its status is Current, and its access level is Create.
  2345.  * OID: .1.3.6.1.2.1.4.24.7.1.14
  2346.  * Description:
  2347. An alternate routing metric for this route.  The  
  2348.                 semantics of this metric are determined by the routing- 
  2349.                 protocol specified in the route's inetCidrRouteProto  
  2350.                 value.  If this metric is not used, its value should be  
  2351.                 set to -1.
  2352.  *
  2353.  * Attributes:
  2354.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  2355.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  2356.  *   settable   1
  2357.  *   defval: -1
  2358.  *
  2359.  *
  2360.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  2361.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  2362.  */
  2363. /**
  2364.  * Check that the proposed new value is potentially valid.
  2365.  *
  2366.  * @param rowreq_ctx
  2367.  *        Pointer to the row request context.
  2368.  * @param inetCidrRouteMetric3_val
  2369.  *        A long containing the new value.
  2370.  *
  2371.  * @retval MFD_SUCCESS        : incoming value is legal
  2372.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  2373.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  2374.  *
  2375.  * This is the place to check for requirements that are not
  2376.  * expressed in the mib syntax (for example, a requirement that
  2377.  * is detailed in the description for an object).
  2378.  *
  2379.  * You should check that the requested change between the undo value and the
  2380.  * new value is legal (ie, the transistion from one value to another
  2381.  * is legal).
  2382.  *      
  2383.  *@note
  2384.  * This check is only to determine if the new value
  2385.  * is b potentially valid. This is the first check of many, and
  2386.  * is one of the simplest ones.
  2387.  * 
  2388.  *@note
  2389.  * this is not the place to do any checks for values
  2390.  * which depend on some other value in the mib. Those
  2391.  * types of checks should be done in the
  2392.  * inetCidrRouteTable_check_dependencies() function.
  2393.  *
  2394.  * The following checks have already been done for you:
  2395.  *    The syntax is ASN_INTEGER
  2396.  *
  2397.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  2398.  *
  2399.  */
  2400. int
  2401. inetCidrRouteMetric3_check_value(inetCidrRouteTable_rowreq_ctx *
  2402.                                  rowreq_ctx, long inetCidrRouteMetric3_val)
  2403. {
  2404.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric3_check_value", "calledn"));
  2405.     /** should never get a NULL pointer */
  2406.     netsnmp_assert(NULL != rowreq_ctx);
  2407.     /*
  2408.      * TODO:441:o: |-> Check for valid inetCidrRouteMetric3 value.
  2409.      */
  2410.     /*
  2411.      * does any os use metrics 2-5? If so, update this to deal with it.
  2412.      */
  2413.     return MFD_NOT_VALID_NOW;
  2414. }                               /* inetCidrRouteMetric3_check_value */
  2415. /**
  2416.  * Save old value information
  2417.  *
  2418.  * @param rowreq_ctx
  2419.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  2420.  *
  2421.  * @retval MFD_SUCCESS : success
  2422.  * @retval MFD_ERROR   : error. set will fail.
  2423.  *
  2424.  * This function will be called after the table level undo setup function
  2425.  * inetCidrRouteTable_undo_setup has been called.
  2426.  *
  2427.  *@note
  2428.  * this function will only be called if a new value is set for this column.
  2429.  *
  2430.  * If there is any setup specific to a particular column (e.g. allocating
  2431.  * memory for a string), you should do that setup in this function, so it
  2432.  * won't be done unless it is necessary.
  2433.  */
  2434. int
  2435. inetCidrRouteMetric3_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2436. {
  2437.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric3_undo_setup", "calledn"));
  2438.     /** should never get a NULL pointer */
  2439.     netsnmp_assert(NULL != rowreq_ctx);
  2440.     /*
  2441.      * TODO:455:o: |-> Setup inetCidrRouteMetric3 undo.
  2442.      */
  2443.     /*
  2444.      * copy inetCidrRouteMetric3 data
  2445.      * set rowreq_ctx->undo->inetCidrRouteMetric3 from rowreq_ctx->data->inetCidrRouteMetric3
  2446.      */
  2447.     return MFD_SUCCESS;
  2448. }                               /* inetCidrRouteMetric3_undo_setup */
  2449. /**
  2450.  * Set the new value.
  2451.  *
  2452.  * @param rowreq_ctx
  2453.  *        Pointer to the users context. You should know how to
  2454.  *        manipulate the value from this object.
  2455.  * @param inetCidrRouteMetric3_val
  2456.  *        A long containing the new value.
  2457.  */
  2458. int
  2459. inetCidrRouteMetric3_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2460.                          long inetCidrRouteMetric3_val)
  2461. {
  2462.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric3_set",
  2463.                 "calledn"));
  2464.     /** should never get a NULL pointer */
  2465.     netsnmp_assert(NULL != rowreq_ctx);
  2466.     /*
  2467.      * TODO:461:M: |-> Set inetCidrRouteMetric3 value.
  2468.      * set inetCidrRouteMetric3 value in rowreq_ctx->data
  2469.      */
  2470.     return MFD_SUCCESS;
  2471. }                               /* inetCidrRouteMetric3_set */
  2472. /**
  2473.  * undo the previous set.
  2474.  *
  2475.  * @param rowreq_ctx
  2476.  *        Pointer to the users context.
  2477.  */
  2478. int
  2479. inetCidrRouteMetric3_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2480. {
  2481.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric3_undo",
  2482.                 "calledn"));
  2483.     netsnmp_assert(NULL != rowreq_ctx);
  2484.     /*
  2485.      * TODO:456:o: |-> Clean up inetCidrRouteMetric3 undo.
  2486.      */
  2487.     /*
  2488.      * copy inetCidrRouteMetric3 data
  2489.      * set rowreq_ctx->data->inetCidrRouteMetric3 from rowreq_ctx->undo->inetCidrRouteMetric3
  2490.      */
  2491.     return MFD_SUCCESS;
  2492. }                               /* inetCidrRouteMetric3_undo */
  2493. /*---------------------------------------------------------------------
  2494.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric4
  2495.  * inetCidrRouteMetric4 is subid 15 of inetCidrRouteEntry.
  2496.  * Its status is Current, and its access level is Create.
  2497.  * OID: .1.3.6.1.2.1.4.24.7.1.15
  2498.  * Description:
  2499. An alternate routing metric for this route.  The  
  2500.                 semantics of this metric are determined by the routing- 
  2501.                 protocol specified in the route's inetCidrRouteProto  
  2502.                 value.  If this metric is not used, its value should be  
  2503.                 set to -1.
  2504.  *
  2505.  * Attributes:
  2506.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  2507.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  2508.  *   settable   1
  2509.  *   defval: -1
  2510.  *
  2511.  *
  2512.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  2513.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  2514.  */
  2515. /**
  2516.  * Check that the proposed new value is potentially valid.
  2517.  *
  2518.  * @param rowreq_ctx
  2519.  *        Pointer to the row request context.
  2520.  * @param inetCidrRouteMetric4_val
  2521.  *        A long containing the new value.
  2522.  *
  2523.  * @retval MFD_SUCCESS        : incoming value is legal
  2524.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  2525.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  2526.  *
  2527.  * This is the place to check for requirements that are not
  2528.  * expressed in the mib syntax (for example, a requirement that
  2529.  * is detailed in the description for an object).
  2530.  *
  2531.  * You should check that the requested change between the undo value and the
  2532.  * new value is legal (ie, the transistion from one value to another
  2533.  * is legal).
  2534.  *      
  2535.  *@note
  2536.  * This check is only to determine if the new value
  2537.  * is b potentially valid. This is the first check of many, and
  2538.  * is one of the simplest ones.
  2539.  * 
  2540.  *@note
  2541.  * this is not the place to do any checks for values
  2542.  * which depend on some other value in the mib. Those
  2543.  * types of checks should be done in the
  2544.  * inetCidrRouteTable_check_dependencies() function.
  2545.  *
  2546.  * The following checks have already been done for you:
  2547.  *    The syntax is ASN_INTEGER
  2548.  *
  2549.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  2550.  *
  2551.  */
  2552. int
  2553. inetCidrRouteMetric4_check_value(inetCidrRouteTable_rowreq_ctx *
  2554.                                  rowreq_ctx, long inetCidrRouteMetric4_val)
  2555. {
  2556.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric4_check_value", "calledn"));
  2557.     /** should never get a NULL pointer */
  2558.     netsnmp_assert(NULL != rowreq_ctx);
  2559.     /*
  2560.      * TODO:441:o: |-> Check for valid inetCidrRouteMetric4 value.
  2561.      */
  2562.     /*
  2563.      * does any os use metrics 2-5? If so, update this to deal with it.
  2564.      */
  2565.     return MFD_NOT_VALID_NOW;
  2566. }                               /* inetCidrRouteMetric4_check_value */
  2567. /**
  2568.  * Save old value information
  2569.  *
  2570.  * @param rowreq_ctx
  2571.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  2572.  *
  2573.  * @retval MFD_SUCCESS : success
  2574.  * @retval MFD_ERROR   : error. set will fail.
  2575.  *
  2576.  * This function will be called after the table level undo setup function
  2577.  * inetCidrRouteTable_undo_setup has been called.
  2578.  *
  2579.  *@note
  2580.  * this function will only be called if a new value is set for this column.
  2581.  *
  2582.  * If there is any setup specific to a particular column (e.g. allocating
  2583.  * memory for a string), you should do that setup in this function, so it
  2584.  * won't be done unless it is necessary.
  2585.  */
  2586. int
  2587. inetCidrRouteMetric4_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2588. {
  2589.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric4_undo_setup", "calledn"));
  2590.     /** should never get a NULL pointer */
  2591.     netsnmp_assert(NULL != rowreq_ctx);
  2592.     /*
  2593.      * TODO:455:o: |-> Setup inetCidrRouteMetric4 undo.
  2594.      */
  2595.     /*
  2596.      * copy inetCidrRouteMetric4 data
  2597.      * set rowreq_ctx->undo->inetCidrRouteMetric4 from rowreq_ctx->data->inetCidrRouteMetric4
  2598.      */
  2599.     return MFD_SUCCESS;
  2600. }                               /* inetCidrRouteMetric4_undo_setup */
  2601. /**
  2602.  * Set the new value.
  2603.  *
  2604.  * @param rowreq_ctx
  2605.  *        Pointer to the users context. You should know how to
  2606.  *        manipulate the value from this object.
  2607.  * @param inetCidrRouteMetric4_val
  2608.  *        A long containing the new value.
  2609.  */
  2610. int
  2611. inetCidrRouteMetric4_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2612.                          long inetCidrRouteMetric4_val)
  2613. {
  2614.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric4_set",
  2615.                 "calledn"));
  2616.     /** should never get a NULL pointer */
  2617.     netsnmp_assert(NULL != rowreq_ctx);
  2618.     /*
  2619.      * TODO:461:M: |-> Set inetCidrRouteMetric4 value.
  2620.      * set inetCidrRouteMetric4 value in rowreq_ctx->data
  2621.      */
  2622.     return MFD_SUCCESS;
  2623. }                               /* inetCidrRouteMetric4_set */
  2624. /**
  2625.  * undo the previous set.
  2626.  *
  2627.  * @param rowreq_ctx
  2628.  *        Pointer to the users context.
  2629.  */
  2630. int
  2631. inetCidrRouteMetric4_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2632. {
  2633.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric4_undo",
  2634.                 "calledn"));
  2635.     netsnmp_assert(NULL != rowreq_ctx);
  2636.     /*
  2637.      * TODO:456:o: |-> Clean up inetCidrRouteMetric4 undo.
  2638.      */
  2639.     /*
  2640.      * copy inetCidrRouteMetric4 data
  2641.      * set rowreq_ctx->data->inetCidrRouteMetric4 from rowreq_ctx->undo->inetCidrRouteMetric4
  2642.      */
  2643.     return MFD_SUCCESS;
  2644. }                               /* inetCidrRouteMetric4_undo */
  2645. /*---------------------------------------------------------------------
  2646.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteMetric5
  2647.  * inetCidrRouteMetric5 is subid 16 of inetCidrRouteEntry.
  2648.  * Its status is Current, and its access level is Create.
  2649.  * OID: .1.3.6.1.2.1.4.24.7.1.16
  2650.  * Description:
  2651. An alternate routing metric for this route.  The  
  2652.                 semantics of this metric are determined by the routing- 
  2653.                 protocol specified in the route's inetCidrRouteProto  
  2654.                 value.  If this metric is not used, its value should be  
  2655.                 set to -1.
  2656.  *
  2657.  * Attributes:
  2658.  *   accessible 1     isscalar 0     enums  0      hasdefval 1
  2659.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  2660.  *   settable   1
  2661.  *   defval: -1
  2662.  *
  2663.  *
  2664.  * Its syntax is INTEGER32 (based on perltype INTEGER32)
  2665.  * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
  2666.  */
  2667. /**
  2668.  * Check that the proposed new value is potentially valid.
  2669.  *
  2670.  * @param rowreq_ctx
  2671.  *        Pointer to the row request context.
  2672.  * @param inetCidrRouteMetric5_val
  2673.  *        A long containing the new value.
  2674.  *
  2675.  * @retval MFD_SUCCESS        : incoming value is legal
  2676.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  2677.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  2678.  *
  2679.  * This is the place to check for requirements that are not
  2680.  * expressed in the mib syntax (for example, a requirement that
  2681.  * is detailed in the description for an object).
  2682.  *
  2683.  * You should check that the requested change between the undo value and the
  2684.  * new value is legal (ie, the transistion from one value to another
  2685.  * is legal).
  2686.  *      
  2687.  *@note
  2688.  * This check is only to determine if the new value
  2689.  * is b potentially valid. This is the first check of many, and
  2690.  * is one of the simplest ones.
  2691.  * 
  2692.  *@note
  2693.  * this is not the place to do any checks for values
  2694.  * which depend on some other value in the mib. Those
  2695.  * types of checks should be done in the
  2696.  * inetCidrRouteTable_check_dependencies() function.
  2697.  *
  2698.  * The following checks have already been done for you:
  2699.  *    The syntax is ASN_INTEGER
  2700.  *
  2701.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  2702.  *
  2703.  */
  2704. int
  2705. inetCidrRouteMetric5_check_value(inetCidrRouteTable_rowreq_ctx *
  2706.                                  rowreq_ctx, long inetCidrRouteMetric5_val)
  2707. {
  2708.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric5_check_value", "calledn"));
  2709.     /** should never get a NULL pointer */
  2710.     netsnmp_assert(NULL != rowreq_ctx);
  2711.     /*
  2712.      * TODO:441:o: |-> Check for valid inetCidrRouteMetric5 value.
  2713.      */
  2714.     /*
  2715.      * does any os use metrics 2-5? If so, update this to deal with it.
  2716.      */
  2717.     return MFD_NOT_VALID_NOW;
  2718. }                               /* inetCidrRouteMetric5_check_value */
  2719. /**
  2720.  * Save old value information
  2721.  *
  2722.  * @param rowreq_ctx
  2723.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  2724.  *
  2725.  * @retval MFD_SUCCESS : success
  2726.  * @retval MFD_ERROR   : error. set will fail.
  2727.  *
  2728.  * This function will be called after the table level undo setup function
  2729.  * inetCidrRouteTable_undo_setup has been called.
  2730.  *
  2731.  *@note
  2732.  * this function will only be called if a new value is set for this column.
  2733.  *
  2734.  * If there is any setup specific to a particular column (e.g. allocating
  2735.  * memory for a string), you should do that setup in this function, so it
  2736.  * won't be done unless it is necessary.
  2737.  */
  2738. int
  2739. inetCidrRouteMetric5_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2740. {
  2741.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric5_undo_setup", "calledn"));
  2742.     /** should never get a NULL pointer */
  2743.     netsnmp_assert(NULL != rowreq_ctx);
  2744.     /*
  2745.      * TODO:455:o: |-> Setup inetCidrRouteMetric5 undo.
  2746.      */
  2747.     /*
  2748.      * copy inetCidrRouteMetric5 data
  2749.      * set rowreq_ctx->undo->inetCidrRouteMetric5 from rowreq_ctx->data->inetCidrRouteMetric5
  2750.      */
  2751.     return MFD_SUCCESS;
  2752. }                               /* inetCidrRouteMetric5_undo_setup */
  2753. /**
  2754.  * Set the new value.
  2755.  *
  2756.  * @param rowreq_ctx
  2757.  *        Pointer to the users context. You should know how to
  2758.  *        manipulate the value from this object.
  2759.  * @param inetCidrRouteMetric5_val
  2760.  *        A long containing the new value.
  2761.  */
  2762. int
  2763. inetCidrRouteMetric5_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2764.                          long inetCidrRouteMetric5_val)
  2765. {
  2766.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric5_set",
  2767.                 "calledn"));
  2768.     /** should never get a NULL pointer */
  2769.     netsnmp_assert(NULL != rowreq_ctx);
  2770.     /*
  2771.      * TODO:461:M: |-> Set inetCidrRouteMetric5 value.
  2772.      * set inetCidrRouteMetric5 value in rowreq_ctx->data
  2773.      */
  2774.     return MFD_SUCCESS;
  2775. }                               /* inetCidrRouteMetric5_set */
  2776. /**
  2777.  * undo the previous set.
  2778.  *
  2779.  * @param rowreq_ctx
  2780.  *        Pointer to the users context.
  2781.  */
  2782. int
  2783. inetCidrRouteMetric5_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2784. {
  2785.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteMetric5_undo",
  2786.                 "calledn"));
  2787.     netsnmp_assert(NULL != rowreq_ctx);
  2788.     /*
  2789.      * TODO:456:o: |-> Clean up inetCidrRouteMetric5 undo.
  2790.      */
  2791.     /*
  2792.      * copy inetCidrRouteMetric5 data
  2793.      * set rowreq_ctx->data->inetCidrRouteMetric5 from rowreq_ctx->undo->inetCidrRouteMetric5
  2794.      */
  2795.     return MFD_SUCCESS;
  2796. }                               /* inetCidrRouteMetric5_undo */
  2797. /*---------------------------------------------------------------------
  2798.  * IP-FORWARD-MIB::inetCidrRouteEntry.inetCidrRouteStatus
  2799.  * inetCidrRouteStatus is subid 17 of inetCidrRouteEntry.
  2800.  * Its status is Current, and its access level is Create.
  2801.  * OID: .1.3.6.1.2.1.4.24.7.1.17
  2802.  * Description:
  2803. The row status variable, used according to row  
  2804.                 installation and removal conventions. 
  2805.                 A row entry cannot be modified when the status is 
  2806.                 marked as active(1).
  2807.  *
  2808.  * Attributes:
  2809.  *   accessible 1     isscalar 0     enums  1      hasdefval 0
  2810.  *   readable   1     iscolumn 1     ranges 0      hashint   0
  2811.  *   settable   1
  2812.  *
  2813.  * Enum range: 3/8. Values:  active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6)
  2814.  *
  2815.  * Its syntax is RowStatus (based on perltype INTEGER)
  2816.  * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
  2817.  */
  2818. /**
  2819.  * Check that the proposed new value is potentially valid.
  2820.  *
  2821.  * @param rowreq_ctx
  2822.  *        Pointer to the row request context.
  2823.  * @param inetCidrRouteStatus_val
  2824.  *        A long containing the new value.
  2825.  *
  2826.  * @retval MFD_SUCCESS        : incoming value is legal
  2827.  * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
  2828.  * @retval MFD_NOT_VALID_EVER : incoming value is never valid
  2829.  *
  2830.  * This is the place to check for requirements that are not
  2831.  * expressed in the mib syntax (for example, a requirement that
  2832.  * is detailed in the description for an object).
  2833.  *
  2834.  * You should check that the requested change between the undo value and the
  2835.  * new value is legal (ie, the transistion from one value to another
  2836.  * is legal).
  2837.  *      
  2838.  *@note
  2839.  * This check is only to determine if the new value
  2840.  * is b potentially valid. This is the first check of many, and
  2841.  * is one of the simplest ones.
  2842.  * 
  2843.  *@note
  2844.  * this is not the place to do any checks for values
  2845.  * which depend on some other value in the mib. Those
  2846.  * types of checks should be done in the
  2847.  * inetCidrRouteTable_check_dependencies() function.
  2848.  *
  2849.  * The following checks have already been done for you:
  2850.  *    The syntax is ASN_INTEGER
  2851.  *    The value is one of  active(1), notInService(2), notReady(3), createAndGo(4), createAndWait(5), destroy(6)
  2852.  *
  2853.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  2854.  *
  2855.  */
  2856. int
  2857. inetCidrRouteStatus_check_value(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2858.                                 u_long inetCidrRouteStatus_val)
  2859. {
  2860.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteStatus_check_value", "calledn"));
  2861.     /** should never get a NULL pointer */
  2862.     netsnmp_assert(NULL != rowreq_ctx);
  2863.     /*
  2864.      * TODO:441:o: |-> Check for valid inetCidrRouteStatus value.
  2865.      */
  2866.     return MFD_SUCCESS;         /* inetCidrRouteStatus value not illegal */
  2867. }                               /* inetCidrRouteStatus_check_value */
  2868. /**
  2869.  * Save old value information
  2870.  *
  2871.  * @param rowreq_ctx
  2872.  *        Pointer to the table context (inetCidrRouteTable_rowreq_ctx)
  2873.  *
  2874.  * @retval MFD_SUCCESS : success
  2875.  * @retval MFD_ERROR   : error. set will fail.
  2876.  *
  2877.  * This function will be called after the table level undo setup function
  2878.  * inetCidrRouteTable_undo_setup has been called.
  2879.  *
  2880.  *@note
  2881.  * this function will only be called if a new value is set for this column.
  2882.  *
  2883.  * If there is any setup specific to a particular column (e.g. allocating
  2884.  * memory for a string), you should do that setup in this function, so it
  2885.  * won't be done unless it is necessary.
  2886.  */
  2887. int
  2888. inetCidrRouteStatus_undo_setup(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2889. {
  2890.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteStatus_undo_setup", "calledn"));
  2891.     /** should never get a NULL pointer */
  2892.     netsnmp_assert(NULL != rowreq_ctx);
  2893.     /*
  2894.      * TODO:455:o: |-> Setup inetCidrRouteStatus undo.
  2895.      */
  2896.     /*
  2897.      * copy inetCidrRouteStatus data
  2898.      * set rowreq_ctx->undo->inetCidrRouteStatus from rowreq_ctx->data->inetCidrRouteStatus
  2899.      */
  2900.     return MFD_SUCCESS;
  2901. }                               /* inetCidrRouteStatus_undo_setup */
  2902. /**
  2903.  * Set the new value.
  2904.  *
  2905.  * @param rowreq_ctx
  2906.  *        Pointer to the users context. You should know how to
  2907.  *        manipulate the value from this object.
  2908.  * @param inetCidrRouteStatus_val
  2909.  *        A long containing the new value.
  2910.  */
  2911. int
  2912. inetCidrRouteStatus_set(inetCidrRouteTable_rowreq_ctx * rowreq_ctx,
  2913.                         u_long inetCidrRouteStatus_val)
  2914. {
  2915.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteStatus_set",
  2916.                 "calledn"));
  2917.     /** should never get a NULL pointer */
  2918.     netsnmp_assert(NULL != rowreq_ctx);
  2919.     /*
  2920.      * TODO:461:M: |-> Set inetCidrRouteStatus value.
  2921.      * set inetCidrRouteStatus value in rowreq_ctx->data
  2922.      */
  2923.     return MFD_SUCCESS;
  2924. }                               /* inetCidrRouteStatus_set */
  2925. /**
  2926.  * undo the previous set.
  2927.  *
  2928.  * @param rowreq_ctx
  2929.  *        Pointer to the users context.
  2930.  */
  2931. int
  2932. inetCidrRouteStatus_undo(inetCidrRouteTable_rowreq_ctx * rowreq_ctx)
  2933. {
  2934.     DEBUGMSGTL(("verbose:inetCidrRouteTable:inetCidrRouteStatus_undo",
  2935.                 "calledn"));
  2936.     netsnmp_assert(NULL != rowreq_ctx);
  2937.     /*
  2938.      * TODO:456:o: |-> Clean up inetCidrRouteStatus undo.
  2939.      */
  2940.     /*
  2941.      * copy inetCidrRouteStatus data
  2942.      * set rowreq_ctx->data->inetCidrRouteStatus from rowreq_ctx->undo->inetCidrRouteStatus
  2943.      */
  2944.     return MFD_SUCCESS;
  2945. }                               /* inetCidrRouteStatus_undo */
  2946. /** @} */
  2947. /** @{ */