1 /* 2 * Copyright (c) 2001-2003 3 * Fraunhofer Institute for Open Communication Systems (FhG Fokus). 4 * All rights reserved. 5 * 6 * Author: Harti Brandt <harti@freebsd.org> 7 * 8 * Redistribution of this software and documentation and use in source and 9 * binary forms, with or without modification, are permitted provided that 10 * the following conditions are met: 11 * 12 * 1. Redistributions of source code or documentation must retain the above 13 * copyright notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. Neither the name of the Institute nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY FRAUNHOFER FOKUS 22 * AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 23 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 24 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 25 * FRAUNHOFER FOKUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 28 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 31 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 * $Begemot: bsnmp/snmp_mibII/mibII_ifmib.c,v 1.8 2003/12/03 10:01:19 hbb Exp $ 34 * 35 * Interfaces group. 36 */ 37 #include "mibII.h" 38 #include "mibII_oid.h" 39 40 /* 41 * Scalars 42 */ 43 int 44 op_ifmib(struct snmp_context *ctx __unused, struct snmp_value *value, 45 u_int sub, u_int idx __unused, enum snmp_op op) 46 { 47 switch (op) { 48 49 case SNMP_OP_GETNEXT: 50 abort(); 51 52 case SNMP_OP_GET: 53 break; 54 55 case SNMP_OP_SET: 56 return (SNMP_ERR_NOT_WRITEABLE); 57 58 case SNMP_OP_ROLLBACK: 59 case SNMP_OP_COMMIT: 60 abort(); 61 } 62 63 switch (value->var.subs[sub - 1]) { 64 65 case LEAF_ifTableLastChange: 66 if (mib_iftable_last_change > start_tick) 67 value->v.uint32 = mib_iftable_last_change - start_tick; 68 else 69 value->v.uint32 = 0; 70 break; 71 72 case LEAF_ifStackLastChange: 73 if (mib_ifstack_last_change > start_tick) 74 value->v.uint32 = mib_ifstack_last_change - start_tick; 75 else 76 value->v.uint32 = 0; 77 break; 78 } 79 return (SNMP_ERR_NOERROR); 80 } 81