]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrp_snmp.c
zebra: Allow ns delete to happen after under/over flow checks
[mirror_frr.git] / eigrpd / eigrp_snmp.c
index f18894bb8193a40c054d3c54ae27c4084a0a689c..21c92386aeb42fd767e52bbbcb5f18a960456cb0 100644 (file)
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with GNU Zebra; see the file COPYING.  If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -69,7 +68,7 @@ SNMP_LOCAL_VARIABLES
 #define EIGRPMIB 1,3,6,1,4,1,9,9,449,1
 
 /* EIGRP-MIB instances. */
-oid eigrp_oid [] = { EIGRPMIB };
+oid eigrp_oid[] = {EIGRPMIB};
 
 /* EIGRP VPN entry */
 #define EIGRPVPNID                                             1
@@ -167,1223 +166,1236 @@ oid eigrp_oid [] = { EIGRPMIB };
 #define INTERFACEINDEXORZERO    ASN_INTEGER
 #define UINTEGER                ASN_UNSIGNED
 
-
-
-
 /* Hook functions. */
-static u_char *eigrpVpnEntry (struct variable *, oid *, size_t *,
-                              int, size_t *, WriteMethod **);
-static u_char *eigrpTraffStatsEntry (struct variable *, oid *, size_t *, int,
-                                     size_t *, WriteMethod **);
-static u_char *eigrpTopologyEntry (struct variable *, oid *, size_t *,
-                                   int, size_t *, WriteMethod **);
-static u_char *eigrpPeerEntry (struct variable *, oid *, size_t *, int,
-                               size_t *, WriteMethod **);
-static u_char *eigrpInterfaceEntry (struct variable *, oid *, size_t *, int,
-                                    size_t *, WriteMethod **);
-
-
-struct variable eigrp_variables[] =
-  {
-    /* EIGRP vpn variables */
-    {EIGRPVPNID,               INTEGER, NOACCESS, eigrpVpnEntry,
-     4, {1, 1, 1, 1}},
-    {EIGRPVPNNAME,             STRING, RONLY, eigrpVpnEntry,
-     4, {1, 1, 1, 2}},
-
-    /* EIGRP traffic stats variables */
-    {EIGRPASNUMBER,                    UINTEGER, NOACCESS, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 1}},
-    {EIGRPNBRCOUNT,                    UINTEGER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 2}},
-    {EIGRPHELLOSSENT,                  COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 3}},
-    {EIGRPHELLOSRCVD,                  COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 4}},
-    {EIGRPUPDATESSENT,                 COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 5}},
-    {EIGRPUPDATESRCVD,                 COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 6}},
-    {EIGRPQUERIESSENT,            COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 7}},
-    {EIGRPQUERIESRCVD,            COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 8}},
-    {EIGRPREPLIESSENT,                 COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 9}},
-    {EIGRPREPLIESRCVD,            COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 10}},
-    {EIGRPACKSSENT,               COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 11}},
-    {EIGRPACKSRCVD,               COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 12}},
-    {EIGRPINPUTQHIGHMARK,         INTEGER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 13}},
-    {EIGRPINPUTQDROPS,                 COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 14}},
-    {EIGRPSIAQUERIESSENT,              COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 15}},
-    {EIGRPSIAQUERIESRCVD,              COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 16}},
-    {EIGRPASROUTERIDTYPE,         IPADDRESSTYPE, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 17}},
-    {EIGRPASROUTERID,                  IPADDRESS, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 18}},
-    {EIGRPTOPOROUTES,                  COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 19}},
-    {EIGRPHEADSERIAL,                  COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 20}},
-    {EIGRPNEXTSERIAL,                  COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 21}},
-    {EIGRPXMITPENDREPLIES,             INTEGER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 22}},
-    {EIGRPXMITDUMMIES,                 COUNTER, RONLY, eigrpTraffStatsEntry,
-     4, {2, 1, 1, 23}},
-
-    /* EIGRP topology variables */
-    {EIGRPDESTNETTYPE,                 IPADDRESSTYPE, NOACCESS, eigrpTopologyEntry,
-     4, {3, 1, 1, 1}},
-    {EIGRPDESTNET,                             IPADDRESSPREFIXLEN, NOACCESS, eigrpTopologyEntry,
-     4, {3, 1, 1, 2}},
-    {EIGRPDESTNETPREFIXLEN,            IPADDRESSTYPE, NOACCESS, eigrpTopologyEntry,
-     4, {3, 1, 1, 4}},
-    {EIGRPACTIVE,                              INTEGER, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 5}},
-    {EIGRPSTUCKINACTIVE,               INTEGER, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 6}},
-    {EIGRPDESTSUCCESSORS,              INTEGER, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 7}},
-    {EIGRPFDISTANCE,                   INTEGER, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 8}},
-    {EIGRPROUTEORIGINTYPE,             STRING, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 9}},
-    {EIGRPROUTEORIGINADDRTYPE,    IPADDRESSTYPE, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 10}},
-    {EIGRPROUTEORIGINADDR,             IPADDRESS, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 11}},
-    {EIGRPNEXTHOPADDRESSTYPE,     IPADDRESSTYPE, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 12}},
-    {EIGRPNEXTHOPADDRESS,              IPADDRESS, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 13}},
-    {EIGRPNEXTHOPINTERFACE,       STRING, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 14}},
-    {EIGRPDISTANCE,                    INTEGER, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 15}},
-    {EIGRPREPORTDISTANCE,              INTEGER, RONLY, eigrpTopologyEntry,
-     4, {3, 1, 1, 16}},
-
-    /* EIGRP peer variables */
-    {EIGRPHANDLE,                      INTEGER, NOACCESS, eigrpPeerEntry,
-     4, {4, 1, 1, 1}},
-    {EIGRPPEERADDRTYPE,        IPADDRESSTYPE, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 2}},
-    {EIGRPPEERADDR,                    IPADDRESS, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 3}},
-    {EIGRPPEERIFINDEX,                 INTERFACEINDEXORZERO, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 4}},
-    {EIGRPHOLDTIME,                    INTEGER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 5}},
-    {EIGRPUPTIME,                      STRING, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 6}},
-    {EIGRPSRTT,                        INTEGER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 7}},
-    {EIGRPRTO,                         INTEGER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 8}},
-    {EIGRPPKTSENQUEUED,                        INTEGER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 9}},
-    {EIGRPLASTSEQ,                     INTEGER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 10}},
-    {EIGRPVERSION,                     STRING, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 11}},
-    {EIGRPRETRANS,                     COUNTER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 12}},
-    {EIGRPRETRIES,                     INTEGER, RONLY, eigrpPeerEntry,
-     4, {4, 1, 1, 13}},
-
-    /* EIGRP interface variables */
-    {EIGRPPEERCOUNT,                   GAUGE, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 3}},
-    {EIGRPXMITRELIABLEQ,               GAUGE, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 4}},
-    {EIGRPXMITUNRELIABLEQ,             GAUGE, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 5}},
-    {EIGRPMEANSRTT,                    INTEGER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 6}},
-    {EIGRPPACINGRELIABLE,              INTEGER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 7}},
-    {EIGRPPACINGUNRELIABLE,       INTEGER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 8}},
-    {EIGRPMFLOWTIMER,                  INTEGER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 9}},
-    {EIGRPPENDINGROUTES,               GAUGE, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 10}},
-    {EIGRPHELLOINTERVAL,               INTEGER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 11}},
-    {EIGRPXMITNEXTSERIAL,              COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 12}},
-    {EIGRPUMCASTS,                     COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 13}},
-    {EIGRPRMCASTS,                     COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 14}},
-    {EIGRPUUCASTS,                     COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 15}},
-    {EIGRPRUCASTS,                     COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 16}},
-    {EIGRPMCASTEXCEPTS,        COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 17}},
-    {EIGRPCRPKTS,                              COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 18}},
-    {EIGRPACKSSUPPRESSED,              COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 19}},
-    {EIGRPRETRANSSENT,                 COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 20}},
-    {EIGRPOOSRCVD,                     COUNTER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 21}},
-    {EIGRPAUTHMODE,                    INTEGER, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 22}},
-    {EIGRPAUTHKEYCHAIN,        STRING, RONLY, eigrpInterfaceEntry,
-     4, {5, 1, 1, 23}}
-};
-
-static struct eigrp_neighbor *
-eigrp_snmp_nbr_lookup (struct eigrp *eigrp, struct in_addr *nbr_addr,
-                       unsigned int *ifindex)
+static uint8_t *eigrpVpnEntry(struct variable *, oid *, size_t *, int, size_t *,
+                             WriteMethod **);
+static uint8_t *eigrpTraffStatsEntry(struct variable *, oid *, size_t *, int,
+                                    size_t *, WriteMethod **);
+static uint8_t *eigrpTopologyEntry(struct variable *, oid *, size_t *, int,
+                                  size_t *, WriteMethod **);
+static uint8_t *eigrpPeerEntry(struct variable *, oid *, size_t *, int,
+                              size_t *, WriteMethod **);
+static uint8_t *eigrpInterfaceEntry(struct variable *, oid *, size_t *, int,
+                                   size_t *, WriteMethod **);
+
+
+struct variable eigrp_variables[] = {
+       /* EIGRP vpn variables */
+       {EIGRPVPNID, INTEGER, NOACCESS, eigrpVpnEntry, 4, {1, 1, 1, 1}},
+       {EIGRPVPNNAME, STRING, RONLY, eigrpVpnEntry, 4, {1, 1, 1, 2}},
+
+       /* EIGRP traffic stats variables */
+       {EIGRPASNUMBER,
+        UINTEGER,
+        NOACCESS,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 1}},
+       {EIGRPNBRCOUNT, UINTEGER, RONLY, eigrpTraffStatsEntry, 4, {2, 1, 1, 2}},
+       {EIGRPHELLOSSENT,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 3}},
+       {EIGRPHELLOSRCVD,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 4}},
+       {EIGRPUPDATESSENT,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 5}},
+       {EIGRPUPDATESRCVD,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 6}},
+       {EIGRPQUERIESSENT,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 7}},
+       {EIGRPQUERIESRCVD,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 8}},
+       {EIGRPREPLIESSENT,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 9}},
+       {EIGRPREPLIESRCVD,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 10}},
+       {EIGRPACKSSENT, COUNTER, RONLY, eigrpTraffStatsEntry, 4, {2, 1, 1, 11}},
+       {EIGRPACKSRCVD, COUNTER, RONLY, eigrpTraffStatsEntry, 4, {2, 1, 1, 12}},
+       {EIGRPINPUTQHIGHMARK,
+        INTEGER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 13}},
+       {EIGRPINPUTQDROPS,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 14}},
+       {EIGRPSIAQUERIESSENT,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 15}},
+       {EIGRPSIAQUERIESRCVD,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 16}},
+       {EIGRPASROUTERIDTYPE,
+        IPADDRESSTYPE,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 17}},
+       {EIGRPASROUTERID,
+        IPADDRESS,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 18}},
+       {EIGRPTOPOROUTES,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 19}},
+       {EIGRPHEADSERIAL,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 20}},
+       {EIGRPNEXTSERIAL,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 21}},
+       {EIGRPXMITPENDREPLIES,
+        INTEGER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 22}},
+       {EIGRPXMITDUMMIES,
+        COUNTER,
+        RONLY,
+        eigrpTraffStatsEntry,
+        4,
+        {2, 1, 1, 23}},
+
+       /* EIGRP topology variables */
+       {EIGRPDESTNETTYPE,
+        IPADDRESSTYPE,
+        NOACCESS,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 1}},
+       {EIGRPDESTNET,
+        IPADDRESSPREFIXLEN,
+        NOACCESS,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 2}},
+       {EIGRPDESTNETPREFIXLEN,
+        IPADDRESSTYPE,
+        NOACCESS,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 4}},
+       {EIGRPACTIVE, INTEGER, RONLY, eigrpTopologyEntry, 4, {3, 1, 1, 5}},
+       {EIGRPSTUCKINACTIVE,
+        INTEGER,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 6}},
+       {EIGRPDESTSUCCESSORS,
+        INTEGER,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 7}},
+       {EIGRPFDISTANCE, INTEGER, RONLY, eigrpTopologyEntry, 4, {3, 1, 1, 8}},
+       {EIGRPROUTEORIGINTYPE,
+        STRING,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 9}},
+       {EIGRPROUTEORIGINADDRTYPE,
+        IPADDRESSTYPE,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 10}},
+       {EIGRPROUTEORIGINADDR,
+        IPADDRESS,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 11}},
+       {EIGRPNEXTHOPADDRESSTYPE,
+        IPADDRESSTYPE,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 12}},
+       {EIGRPNEXTHOPADDRESS,
+        IPADDRESS,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 13}},
+       {EIGRPNEXTHOPINTERFACE,
+        STRING,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 14}},
+       {EIGRPDISTANCE, INTEGER, RONLY, eigrpTopologyEntry, 4, {3, 1, 1, 15}},
+       {EIGRPREPORTDISTANCE,
+        INTEGER,
+        RONLY,
+        eigrpTopologyEntry,
+        4,
+        {3, 1, 1, 16}},
+
+       /* EIGRP peer variables */
+       {EIGRPHANDLE, INTEGER, NOACCESS, eigrpPeerEntry, 4, {4, 1, 1, 1}},
+       {EIGRPPEERADDRTYPE,
+        IPADDRESSTYPE,
+        RONLY,
+        eigrpPeerEntry,
+        4,
+        {4, 1, 1, 2}},
+       {EIGRPPEERADDR, IPADDRESS, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 3}},
+       {EIGRPPEERIFINDEX,
+        INTERFACEINDEXORZERO,
+        RONLY,
+        eigrpPeerEntry,
+        4,
+        {4, 1, 1, 4}},
+       {EIGRPHOLDTIME, INTEGER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 5}},
+       {EIGRPUPTIME, STRING, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 6}},
+       {EIGRPSRTT, INTEGER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 7}},
+       {EIGRPRTO, INTEGER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 8}},
+       {EIGRPPKTSENQUEUED, INTEGER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 9}},
+       {EIGRPLASTSEQ, INTEGER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 10}},
+       {EIGRPVERSION, STRING, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 11}},
+       {EIGRPRETRANS, COUNTER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 12}},
+       {EIGRPRETRIES, INTEGER, RONLY, eigrpPeerEntry, 4, {4, 1, 1, 13}},
+
+       /* EIGRP interface variables */
+       {EIGRPPEERCOUNT, GAUGE, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 3}},
+       {EIGRPXMITRELIABLEQ,
+        GAUGE,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 4}},
+       {EIGRPXMITUNRELIABLEQ,
+        GAUGE,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 5}},
+       {EIGRPMEANSRTT, INTEGER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 6}},
+       {EIGRPPACINGRELIABLE,
+        INTEGER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 7}},
+       {EIGRPPACINGUNRELIABLE,
+        INTEGER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 8}},
+       {EIGRPMFLOWTIMER, INTEGER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 9}},
+       {EIGRPPENDINGROUTES,
+        GAUGE,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 10}},
+       {EIGRPHELLOINTERVAL,
+        INTEGER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 11}},
+       {EIGRPXMITNEXTSERIAL,
+        COUNTER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 12}},
+       {EIGRPUMCASTS, COUNTER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 13}},
+       {EIGRPRMCASTS, COUNTER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 14}},
+       {EIGRPUUCASTS, COUNTER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 15}},
+       {EIGRPRUCASTS, COUNTER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 16}},
+       {EIGRPMCASTEXCEPTS,
+        COUNTER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 17}},
+       {EIGRPCRPKTS, COUNTER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 18}},
+       {EIGRPACKSSUPPRESSED,
+        COUNTER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 19}},
+       {EIGRPRETRANSSENT,
+        COUNTER,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 20}},
+       {EIGRPOOSRCVD, COUNTER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 21}},
+       {EIGRPAUTHMODE, INTEGER, RONLY, eigrpInterfaceEntry, 4, {5, 1, 1, 22}},
+       {EIGRPAUTHKEYCHAIN,
+        STRING,
+        RONLY,
+        eigrpInterfaceEntry,
+        4,
+        {5, 1, 1, 23}}};
+
+static struct eigrp_neighbor *eigrp_snmp_nbr_lookup(struct eigrp *eigrp,
+                                                   struct in_addr *nbr_addr,
+                                                   unsigned int *ifindex)
 {
-  struct listnode *node, *nnode, *node2, *nnode2;
-  struct eigrp_interface *ei;
-  struct eigrp_neighbor *nbr;
-
-  for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-    {
-      for (ALL_LIST_ELEMENTS (ei->nbrs, node2, nnode2, nbr))
-        {
-          if (IPV4_ADDR_SAME (&nbr->src, nbr_addr))
-            {
-              return nbr;
-            }
-        }
-    }
-  return NULL;
+       struct listnode *node, *nnode, *node2, *nnode2;
+       struct eigrp_interface *ei;
+       struct eigrp_neighbor *nbr;
+
+       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode, ei)) {
+               for (ALL_LIST_ELEMENTS(ei->nbrs, node2, nnode2, nbr)) {
+                       if (IPV4_ADDR_SAME(&nbr->src, nbr_addr)) {
+                               return nbr;
+                       }
+               }
+       }
+       return NULL;
 }
 
 static struct eigrp_neighbor *
-eigrp_snmp_nbr_lookup_next (struct in_addr *nbr_addr, unsigned int *ifindex,
-                            int first)
+eigrp_snmp_nbr_lookup_next(struct in_addr *nbr_addr, unsigned int *ifindex,
+                          int first)
 {
-  struct listnode *node, *nnode, *node2, *nnode2;
-  struct eigrp_interface *ei;
-  struct eigrp_neighbor *nbr;
-  struct route_node *rn;
-  struct eigrp_neighbor *min = NULL;
-  struct eigrp *eigrp = eigrp;
-
-  eigrp = eigrp_lookup ();
-
-  for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-    {
-      for (ALL_LIST_ELEMENTS (ei->nbrs, node2, nnode2, nbr))
-        {
-          if (first)
-            {
-              if (! min)
-                min = nbr;
-              else if (ntohl (nbr->src.s_addr) < ntohl (min->src.s_addr))
-                min = nbr;
-            }
-          else if (ntohl (nbr->src.s_addr) > ntohl (nbr_addr->s_addr))
-            {
-              if (! min)
-                min = nbr;
-              else if (ntohl (nbr->src.s_addr) < ntohl (min->src.s_addr))
-                min = nbr;
-            }
-        }
-    }
-  if (min)
-    {
-      *nbr_addr = min->src;
-      *ifindex = 0;
-      return min;
-    }
-  return NULL;
+       struct listnode *node, *nnode, *node2, *nnode2;
+       struct eigrp_interface *ei;
+       struct eigrp_neighbor *nbr;
+       struct eigrp_neighbor *min = NULL;
+       struct eigrp *eigrp;
+
+       eigrp = eigrp_lookup();
+
+       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode, ei)) {
+               for (ALL_LIST_ELEMENTS(ei->nbrs, node2, nnode2, nbr)) {
+                       if (first) {
+                               if (!min)
+                                       min = nbr;
+                               else if (ntohl(nbr->src.s_addr)
+                                        < ntohl(min->src.s_addr))
+                                       min = nbr;
+                       } else if (ntohl(nbr->src.s_addr)
+                                  > ntohl(nbr_addr->s_addr)) {
+                               if (!min)
+                                       min = nbr;
+                               else if (ntohl(nbr->src.s_addr)
+                                        < ntohl(min->src.s_addr))
+                                       min = nbr;
+                       }
+               }
+       }
+       if (min) {
+               *nbr_addr = min->src;
+               *ifindex = 0;
+               return min;
+       }
+       return NULL;
 }
 
-static struct eigrp_neighbor *
-eigrpNbrLookup (struct variable *v, oid *name, size_t *length,
-                struct in_addr *nbr_addr, unsigned int *ifindex, int exact)
+static struct eigrp_neighbor *eigrpNbrLookup(struct variable *v, oid *name,
+                                            size_t *length,
+                                            struct in_addr *nbr_addr,
+                                            unsigned int *ifindex, int exact)
 {
-  unsigned int len;
-  int first;
-  struct eigrp_neighbor *nbr;
-  struct eigrp *eigrp;
-
-  eigrp = eigrp_lookup ();
-
-  if (! eigrp)
-    return NULL;
-
-  if (exact)
-    {
-      if (*length != v->namelen + IN_ADDR_SIZE + 1)
-        return NULL;
-
-      oid2in_addr (name + v->namelen, IN_ADDR_SIZE, nbr_addr);
-      *ifindex = name[v->namelen + IN_ADDR_SIZE];
-
-      return eigrp_snmp_nbr_lookup (eigrp, nbr_addr, ifindex);
-    }
-  else
-    {
-      first = 0;
-      len = *length - v->namelen;
-
-      if (len <= 0)
-        first = 1;
-
-      if (len > IN_ADDR_SIZE)
-        len = IN_ADDR_SIZE;
-
-      oid2in_addr (name + v->namelen, len, nbr_addr);
-
-      len = *length - v->namelen - IN_ADDR_SIZE;
-      if (len >= 1)
-        *ifindex = name[v->namelen + IN_ADDR_SIZE];
-
-      nbr = eigrp_snmp_nbr_lookup_next (nbr_addr, ifindex, first);
-
-      if (nbr)
-        {
-          *length = v->namelen + IN_ADDR_SIZE + 1;
-          oid_copy_addr (name + v->namelen, nbr_addr, IN_ADDR_SIZE);
-          name[v->namelen + IN_ADDR_SIZE] = *ifindex;
-          return nbr;
-        }
-    }
-  return NULL;
+       unsigned int len;
+       int first;
+       struct eigrp_neighbor *nbr;
+       struct eigrp *eigrp;
+
+       eigrp = eigrp_lookup();
+
+       if (!eigrp)
+               return NULL;
+
+       if (exact) {
+               if (*length != v->namelen + IN_ADDR_SIZE + 1)
+                       return NULL;
+
+               oid2in_addr(name + v->namelen, IN_ADDR_SIZE, nbr_addr);
+               *ifindex = name[v->namelen + IN_ADDR_SIZE];
+
+               return eigrp_snmp_nbr_lookup(eigrp, nbr_addr, ifindex);
+       } else {
+               first = 0;
+               len = *length - v->namelen;
+
+               if (len == 0)
+                       first = 1;
+
+               if (len > IN_ADDR_SIZE)
+                       len = IN_ADDR_SIZE;
+
+               oid2in_addr(name + v->namelen, len, nbr_addr);
+
+               len = *length - v->namelen - IN_ADDR_SIZE;
+               if (len >= 1)
+                       *ifindex = name[v->namelen + IN_ADDR_SIZE];
+
+               nbr = eigrp_snmp_nbr_lookup_next(nbr_addr, ifindex, first);
+
+               if (nbr) {
+                       *length = v->namelen + IN_ADDR_SIZE + 1;
+                       oid_copy_addr(name + v->namelen, nbr_addr,
+                                     IN_ADDR_SIZE);
+                       name[v->namelen + IN_ADDR_SIZE] = *ifindex;
+                       return nbr;
+               }
+       }
+       return NULL;
 }
 
 
-static u_char *
-eigrpVpnEntry (struct variable *v, oid *name, size_t *length,
-               int exact, size_t *var_len, WriteMethod **write_method)
+static uint8_t *eigrpVpnEntry(struct variable *v, oid *name, size_t *length,
+                             int exact, size_t *var_len,
+                             WriteMethod **write_method)
 {
-  struct eigrp *eigrp;
-
-  eigrp = eigrp_lookup ();
-
-  /* Check whether the instance identifier is valid */
-  if (smux_header_generic (v, name, length, exact, var_len, write_method)
-      == MATCH_FAILED)
-    return NULL;
-
-  /* Return the current value of the variable */
-  switch (v->magic)
-    {
-    case EIGRPVPNID:           /* 1 */
-      /* The unique VPN identifier */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPVPNNAME:           /* 2 */
-      /* The name given to the VPN */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    default:
-      return NULL;
-    }
-  return NULL;
+       struct eigrp *eigrp;
+
+       eigrp = eigrp_lookup();
+
+       /* Check whether the instance identifier is valid */
+       if (smux_header_generic(v, name, length, exact, var_len, write_method)
+           == MATCH_FAILED)
+               return NULL;
+
+       /* Return the current value of the variable */
+       switch (v->magic) {
+       case EIGRPVPNID: /* 1 */
+               /* The unique VPN identifier */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPVPNNAME: /* 2 */
+               /* The name given to the VPN */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       default:
+               return NULL;
+       }
+       return NULL;
 }
 
-static uint32_t
-eigrp_neighbor_count(struct eigrp *eigrp)
+static uint32_t eigrp_neighbor_count(struct eigrp *eigrp)
 {
-  uint32_t count;
-  struct eigrp_interface *ei;
-  struct listnode *node, *node2, *nnode2;
-  struct eigrp_neighbor *nbr;
-
-  if (eigrp == NULL)
-    {
-      return 0;
-    }
-
-  count = 0;
-  for (ALL_LIST_ELEMENTS_RO (eigrp->eiflist, node, ei))
-    {
-      for (ALL_LIST_ELEMENTS (ei->nbrs, node2, nnode2, nbr))
-        {
-          if (nbr->state == EIGRP_NEIGHBOR_UP)
-            count++;
-        }
-    }
-
-  return count;
+       uint32_t count;
+       struct eigrp_interface *ei;
+       struct listnode *node, *node2, *nnode2;
+       struct eigrp_neighbor *nbr;
+
+       if (eigrp == NULL) {
+               return 0;
+       }
+
+       count = 0;
+       for (ALL_LIST_ELEMENTS_RO(eigrp->eiflist, node, ei)) {
+               for (ALL_LIST_ELEMENTS(ei->nbrs, node2, nnode2, nbr)) {
+                       if (nbr->state == EIGRP_NEIGHBOR_UP)
+                               count++;
+               }
+       }
+
+       return count;
 }
 
 
-static u_char *
-eigrpTraffStatsEntry (struct variable *v, oid *name, size_t *length,
-                      int exact, size_t *var_len, WriteMethod **write_method)
+static uint8_t *eigrpTraffStatsEntry(struct variable *v, oid *name,
+                                    size_t *length, int exact, size_t *var_len,
+                                    WriteMethod **write_method)
 {
-  struct eigrp *eigrp;
-  struct eigrp_interface *ei;
-  struct listnode *node, *nnode;
-  int counter;
-
-  eigrp = eigrp_lookup ();
-
-  /* Check whether the instance identifier is valid */
-  if (smux_header_generic (v, name, length, exact, var_len, write_method)
-      == MATCH_FAILED)
-    return NULL;
-
-  /* Return the current value of the variable */
-  switch (v->magic)
-    {
-    case EIGRPASNUMBER:                /* 1 */
-      /* AS-number of this EIGRP instance. */
-      if (eigrp)
-        return SNMP_INTEGER (eigrp->AS);
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPNBRCOUNT:           /* 2 */
-      /* Neighbor count of this EIGRP instance */
-      if (eigrp)
-        return SNMP_INTEGER (eigrp_neighbor_count (eigrp));
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPHELLOSSENT:           /* 3 */
-      /* Hello packets output count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->hello_out;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPHELLOSRCVD:           /* 4 */
-      /* Hello packets input count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->hello_in;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPUPDATESSENT:           /* 5 */
-      /* Update packets output count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->update_out;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPUPDATESRCVD:           /* 6 */
-      /* Update packets input count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->update_in;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPQUERIESSENT:           /* 7 */
-      /* Querry packets output count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->query_out;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPQUERIESRCVD:           /* 8 */
-      /* Querry packets input count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->query_in;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPREPLIESSENT:           /* 9 */
-      /* Reply packets output count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->reply_out;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPREPLIESRCVD:           /* 10 */
-      /* Reply packets input count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->reply_in;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPACKSSENT:           /* 11 */
-      /* Acknowledgement packets output count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->ack_out;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPACKSRCVD:           /* 12 */
-      /* Acknowledgement packets input count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->ack_in;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPINPUTQHIGHMARK:           /* 13 */
-      /* The highest number of EIGRP packets in the input queue */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPINPUTQDROPS:           /* 14 */
-      /* The number of EIGRP packets dropped from the input queue */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPSIAQUERIESSENT:           /* 15 */
-      /* SIA querry packets output count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->siaQuery_out;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPSIAQUERIESRCVD:           /* 16 */
-      /* SIA querry packets input count */
-      if (eigrp)
-        {
-          counter = 0;
-          for (ALL_LIST_ELEMENTS (eigrp->eiflist, node, nnode, ei))
-            {
-              counter += ei->siaQuery_in;
-            }
-          return SNMP_INTEGER (counter);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPASROUTERIDTYPE:           /* 17 */
-      /* Whether the router ID is set manually or automatically */
-      if (eigrp)
-        if(eigrp->router_id_static!=0)
-          return SNMP_INTEGER(1);
-        else
-          return SNMP_INTEGER(1);
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPASROUTERID:           /* 18 */
-      /* Router ID for this EIGRP AS */
-      if (eigrp)
-        if(eigrp->router_id_static!=0)
-          return  SNMP_INTEGER (eigrp->router_id_static);
-        else
-          return  SNMP_INTEGER (eigrp->router_id);
-      else
-        return  SNMP_INTEGER (0);
-      break;
-    case EIGRPTOPOROUTES:           /* 19 */
-      /* The total number of EIGRP derived routes currently existing
-         in the topology table for the AS */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPHEADSERIAL:           /* 20 */
-      /* The serial number of the first route in the internal
-         sequence for an AS*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPNEXTSERIAL:           /* 21 */
-      /* The serial number that would be assigned to the next new
-       or changed route in the topology table for the AS*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPXMITPENDREPLIES:           /* 22 */
-      /* Total number of outstanding replies expected to queries
-         that have been sent to peers in the current AS*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPXMITDUMMIES:           /* 23 */
-      /* Total number of currently existing dummies associated with the AS*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    default:
-      return NULL;
-    }
-  return NULL;
+       struct eigrp *eigrp;
+       struct eigrp_interface *ei;
+       struct listnode *node, *nnode;
+       int counter;
+
+       eigrp = eigrp_lookup();
+
+       /* Check whether the instance identifier is valid */
+       if (smux_header_generic(v, name, length, exact, var_len, write_method)
+           == MATCH_FAILED)
+               return NULL;
+
+       /* Return the current value of the variable */
+       switch (v->magic) {
+       case EIGRPASNUMBER: /* 1 */
+               /* AS-number of this EIGRP instance. */
+               if (eigrp)
+                       return SNMP_INTEGER(eigrp->AS);
+               else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPNBRCOUNT: /* 2 */
+               /* Neighbor count of this EIGRP instance */
+               if (eigrp)
+                       return SNMP_INTEGER(eigrp_neighbor_count(eigrp));
+               else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPHELLOSSENT: /* 3 */
+               /* Hello packets output count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->hello_out;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPHELLOSRCVD: /* 4 */
+               /* Hello packets input count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->hello_in;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPUPDATESSENT: /* 5 */
+               /* Update packets output count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->update_out;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPUPDATESRCVD: /* 6 */
+               /* Update packets input count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->update_in;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPQUERIESSENT: /* 7 */
+               /* Querry packets output count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->query_out;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPQUERIESRCVD: /* 8 */
+               /* Querry packets input count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->query_in;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPREPLIESSENT: /* 9 */
+               /* Reply packets output count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->reply_out;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPREPLIESRCVD: /* 10 */
+               /* Reply packets input count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->reply_in;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPACKSSENT: /* 11 */
+               /* Acknowledgement packets output count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->ack_out;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPACKSRCVD: /* 12 */
+               /* Acknowledgement packets input count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->ack_in;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPINPUTQHIGHMARK: /* 13 */
+               /* The highest number of EIGRP packets in the input queue */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPINPUTQDROPS: /* 14 */
+               /* The number of EIGRP packets dropped from the input queue */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPSIAQUERIESSENT: /* 15 */
+               /* SIA querry packets output count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->siaQuery_out;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPSIAQUERIESRCVD: /* 16 */
+               /* SIA querry packets input count */
+               if (eigrp) {
+                       counter = 0;
+                       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode,
+                                              ei)) {
+                               counter += ei->siaQuery_in;
+                       }
+                       return SNMP_INTEGER(counter);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPASROUTERIDTYPE: /* 17 */
+               /* Whether the router ID is set manually or automatically */
+               if (eigrp)
+                       if (eigrp->router_id_static != 0)
+                               return SNMP_INTEGER(1);
+                       else
+                               return SNMP_INTEGER(1);
+               else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPASROUTERID: /* 18 */
+               /* Router ID for this EIGRP AS */
+               if (eigrp)
+                       if (eigrp->router_id_static != 0)
+                               return SNMP_INTEGER(eigrp->router_id_static);
+                       else
+                               return SNMP_INTEGER(eigrp->router_id);
+               else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPTOPOROUTES: /* 19 */
+               /* The total number of EIGRP derived routes currently existing
+                  in the topology table for the AS */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPHEADSERIAL: /* 20 */
+               /* The serial number of the first route in the internal
+                  sequence for an AS*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPNEXTSERIAL: /* 21 */
+               /* The serial number that would be assigned to the next new
+                or changed route in the topology table for the AS*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPXMITPENDREPLIES: /* 22 */
+               /* Total number of outstanding replies expected to queries
+                  that have been sent to peers in the current AS*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPXMITDUMMIES: /* 23 */
+               /* Total number of currently existing dummies associated with
+                * the AS*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       default:
+               return NULL;
+       }
+       return NULL;
 }
 
-static u_char *
-eigrpTopologyEntry (struct variable *v, oid *name, size_t *length,
-                    int exact, size_t *var_len, WriteMethod **write_method)
+static uint8_t *eigrpTopologyEntry(struct variable *v, oid *name,
+                                  size_t *length, int exact, size_t *var_len,
+                                  WriteMethod **write_method)
 {
-  struct eigrp *eigrp;
-  struct eigrp_interface *ei;
-  struct listnode *node, *nnode;
-
-  eigrp = eigrp_lookup ();
-
-  /* Check whether the instance identifier is valid */
-  if (smux_header_generic (v, name, length, exact, var_len, write_method)
-      == MATCH_FAILED)
-    return NULL;
-
-  /* Return the current value of the variable */
-  switch (v->magic)
-    {
-    case EIGRPDESTNETTYPE:           /* 1 */
-      /* The format of the destination IP network number for a single
-         route in the topology table*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPDESTNET:           /* 2 */
-      /* The destination IP network number for a single route in the topology table*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPDESTNETPREFIXLEN:           /* 4 */
-      /* The prefix length associated with the destination IP network address
-         for a single route in the topology table in the AS*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPACTIVE:           /* 5 */
-      /* A value of true(1) indicates the route to the destination network has failed
-         A value of false(2) indicates the route is stable (passive).*/
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPSTUCKINACTIVE:           /* 6 */
-      /* A value of true(1) indicates that that this route which is in active state
-         has not received any replies to queries for alternate paths */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPDESTSUCCESSORS:           /* 7 */
-      /* Next routing hop for a path to the destination IP network */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPFDISTANCE:           /* 8 */
-      /* Minimum distance from this router to the destination IP network */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPROUTEORIGINTYPE:           /* 9 */
-      /* Text string describing the internal origin of the EIGRP route */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPROUTEORIGINADDRTYPE:           /* 10 */
-      /* The format of the IP address defined as the origin of this
-         topology route entry */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPROUTEORIGINADDR:           /* 11 */
-       /* If the origin of the topology route entry is external to this router,
-          then this object is the IP address of the router from which it originated */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPNEXTHOPADDRESSTYPE:           /* 12 */
-      /* The format of the next hop IP address */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPNEXTHOPADDRESS:           /* 13 */
-      /* Next hop IP address for the route */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPNEXTHOPINTERFACE:           /* 14 */
-      /* The interface through which the next hop IP address is reached */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPDISTANCE:           /* 15 */
-      /* The computed distance to the destination network entry from this router */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPREPORTDISTANCE:           /* 16 */
-      /* The computed distance to the destination network in the topology entry
-         reported to this router by the originator of this route */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    default:
-      return NULL;
-    }
-  return NULL;
+       struct eigrp *eigrp;
+
+       eigrp = eigrp_lookup();
+
+       /* Check whether the instance identifier is valid */
+       if (smux_header_generic(v, name, length, exact, var_len, write_method)
+           == MATCH_FAILED)
+               return NULL;
+
+       /* Return the current value of the variable */
+       switch (v->magic) {
+       case EIGRPDESTNETTYPE: /* 1 */
+               /* The format of the destination IP network number for a single
+                  route in the topology table*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPDESTNET: /* 2 */
+               /* The destination IP network number for a single route in the
+                * topology table*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPDESTNETPREFIXLEN: /* 4 */
+               /* The prefix length associated with the destination IP network
+                  address
+                  for a single route in the topology table in the AS*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPACTIVE: /* 5 */
+               /* A value of true(1) indicates the route to the destination
+                  network has failed
+                  A value of false(2) indicates the route is stable
+                  (passive).*/
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPSTUCKINACTIVE: /* 6 */
+               /* A value of true(1) indicates that that this route which is in
+                  active state
+                  has not received any replies to queries for alternate paths
+                  */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPDESTSUCCESSORS: /* 7 */
+               /* Next routing hop for a path to the destination IP network */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPFDISTANCE: /* 8 */
+               /* Minimum distance from this router to the destination IP
+                * network */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPROUTEORIGINTYPE: /* 9 */
+               /* Text string describing the internal origin of the EIGRP route
+                */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPROUTEORIGINADDRTYPE: /* 10 */
+               /* The format of the IP address defined as the origin of this
+                  topology route entry */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPROUTEORIGINADDR: /* 11 */
+               /* If the origin of the topology route entry is external to this
+                  router,
+                  then this object is the IP address of the router from which
+                  it originated */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPNEXTHOPADDRESSTYPE: /* 12 */
+               /* The format of the next hop IP address */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPNEXTHOPADDRESS: /* 13 */
+               /* Next hop IP address for the route */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPNEXTHOPINTERFACE: /* 14 */
+               /* The interface through which the next hop IP address is
+                * reached */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPDISTANCE: /* 15 */
+               /* The computed distance to the destination network entry from
+                * this router */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPREPORTDISTANCE: /* 16 */
+               /* The computed distance to the destination network in the
+                  topology entry
+                  reported to this router by the originator of this route */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       default:
+               return NULL;
+       }
+       return NULL;
 }
 
-static u_char *
-eigrpPeerEntry (struct variable *v, oid *name, size_t *length,
-                int exact, size_t *var_len, WriteMethod **write_method)
+static uint8_t *eigrpPeerEntry(struct variable *v, oid *name, size_t *length,
+                              int exact, size_t *var_len,
+                              WriteMethod **write_method)
 {
-  struct eigrp *eigrp;
-  struct eigrp_interface *ei;
-  struct listnode *node, *nnode;
-  struct eigrp_neighbor *nbr;
-  struct in_addr nbr_addr;
-  unsigned int ifindex;
-
-  eigrp = eigrp_lookup ();
-
-  /* Check whether the instance identifier is valid */
-  if (smux_header_generic (v, name, length, exact, var_len, write_method)
-      == MATCH_FAILED)
-    return NULL;
-
-  memset (&nbr_addr, 0, sizeof (struct in_addr));
-  ifindex = 0;
-
-  nbr = eigrpNbrLookup (v, name, length, &nbr_addr, &ifindex, exact);
-  if (! nbr)
-    return NULL;
-  ei = nbr->ei;
-  if (! ei)
-    return NULL;
-
-  /* Return the current value of the variable */
-  switch (v->magic)
-    {
-    case EIGRPHANDLE:           /* 1 */
-      /* The unique internal identifier for the peer in the AS */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPEERADDRTYPE:           /* 2 */
-      /* The format of the remote source IP address used by the peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPEERADDR:           /* 3 */
-      /* The source IP address used by the peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPEERIFINDEX:           /* 4 */
-      /* The ifIndex of the interface on this router */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPHOLDTIME:           /* 5 */
-      /* How much time must pass without receiving a hello packet from this
-         EIGRP peer before this router declares the peer down */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPUPTIME:           /* 6 */
-      /* The elapsed time since the EIGRP adjacency was first established */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPSRTT:           /* 7 */
-      /* The computed smooth round trip time for packets to and from the peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPRTO:           /* 8 */
-      /* The computed retransmission timeout for the peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPKTSENQUEUED:           /* 9 */
-      /* The number of any EIGRP packets currently enqueued */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPLASTSEQ:           /* 10 */
-      /* sequence number of the last EIGRP packet sent to this peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPVERSION:           /* 11 */
-      /* The EIGRP version information reported by the remote peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPRETRANS:           /* 12 */
-      /* The cumulative number of retransmissions to this peer */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPRETRIES:           /* 13 */
-      /* The number of times the current unacknowledged packet has been retried */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    default:
-      return NULL;
-    }
-  return NULL;
+       struct eigrp *eigrp;
+       struct eigrp_interface *ei;
+       struct eigrp_neighbor *nbr;
+       struct in_addr nbr_addr;
+       unsigned int ifindex;
+
+       eigrp = eigrp_lookup();
+
+       /* Check whether the instance identifier is valid */
+       if (smux_header_generic(v, name, length, exact, var_len, write_method)
+           == MATCH_FAILED)
+               return NULL;
+
+       memset(&nbr_addr, 0, sizeof(struct in_addr));
+       ifindex = 0;
+
+       nbr = eigrpNbrLookup(v, name, length, &nbr_addr, &ifindex, exact);
+       if (!nbr)
+               return NULL;
+       ei = nbr->ei;
+       if (!ei)
+               return NULL;
+
+       /* Return the current value of the variable */
+       switch (v->magic) {
+       case EIGRPHANDLE: /* 1 */
+               /* The unique internal identifier for the peer in the AS */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPEERADDRTYPE: /* 2 */
+               /* The format of the remote source IP address used by the peer
+                */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPEERADDR: /* 3 */
+               /* The source IP address used by the peer */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPEERIFINDEX: /* 4 */
+               /* The ifIndex of the interface on this router */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPHOLDTIME: /* 5 */
+               /* How much time must pass without receiving a hello packet from
+                  this
+                  EIGRP peer before this router declares the peer down */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPUPTIME: /* 6 */
+               /* The elapsed time since the EIGRP adjacency was first
+                * established */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPSRTT: /* 7 */
+               /* The computed smooth round trip time for packets to and from
+                * the peer */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPRTO: /* 8 */
+               /* The computed retransmission timeout for the peer */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPKTSENQUEUED: /* 9 */
+               /* The number of any EIGRP packets currently enqueued */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPLASTSEQ: /* 10 */
+               /* sequence number of the last EIGRP packet sent to this peer */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPVERSION: /* 11 */
+               /* The EIGRP version information reported by the remote peer */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPRETRANS: /* 12 */
+               /* The cumulative number of retransmissions to this peer */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPRETRIES: /* 13 */
+               /* The number of times the current unacknowledged packet has
+                * been retried */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       default:
+               return NULL;
+       }
+       return NULL;
 }
 
-static u_char *
-eigrpInterfaceEntry (struct variable *v, oid *name, size_t *length,
-                     int exact, size_t *var_len, WriteMethod **write_method)
+static uint8_t *eigrpInterfaceEntry(struct variable *v, oid *name,
+                                   size_t *length, int exact, size_t *var_len,
+                                   WriteMethod **write_method)
 {
-  struct eigrp *eigrp;
-  struct eigrp_interface *ei;
-  struct listnode *node, *nnode;
-  struct keychain *keychain;
-  struct list *keylist;
-  int counter;
-
-  eigrp = eigrp_lookup ();
-
-  /* Check whether the instance identifier is valid */
-  if (smux_header_generic (v, name, length, exact, var_len, write_method)
-      == MATCH_FAILED)
-    return NULL;
-
-  /* Return the current value of the variable */
-  switch (v->magic)
-    {
-    case EIGRPPEERCOUNT:           /* 3 */
-      /* The number of EIGRP adjacencies currently formed with
-         peers reached through this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER (eigrp_neighbor_count (eigrp));
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPXMITRELIABLEQ:           /* 4 */
-      /* The number of EIGRP packets currently waiting in the reliable
-         transport transmission queue */
-      if (eigrp)
-        {
-          return SNMP_INTEGER (1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPXMITUNRELIABLEQ:           /* 5 */
-      /* The number of EIGRP packets currently waiting in the unreliable
-         transport transmission queue */
-      if (eigrp)
-        {
-          return SNMP_INTEGER (1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPMEANSRTT:           /* 6 */
-      /* The average of all the computed smooth round trip time values
-         for a packet to and from all peers established on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPACINGRELIABLE:           /* 7 */
-      /* The configured time interval between EIGRP packet transmissions */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPACINGUNRELIABLE:           /* 8 */
-      /* The configured time interval between EIGRP packet transmissions
-         on the interface when the unreliable transport method is used */
-      if (eigrp)
-        {
-          return SNMP_INTEGER (1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPMFLOWTIMER:           /* 9 */
-      /* The configured multicast flow control timer value */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPPENDINGROUTES:           /* 10 */
-      /* The number of queued EIGRP routing updates awaiting transmission */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPHELLOINTERVAL:           /* 11 */
-      /* The configured time interval between Hello packet transmissions */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPXMITNEXTSERIAL:           /* 12 */
-      /* The serial number of the next EIGRP packet that is to be queued
-         for transmission */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPUMCASTS:           /* 13 */
-      /* The total number of unreliable EIGRP multicast packets sent
-         on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPRMCASTS:           /* 14 */
-      /* The total number of reliable EIGRP multicast packets sent
-         on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPUUCASTS:           /* 15 */
-      /* The total number of unreliable EIGRP unicast packets sent
-         on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPRUCASTS:           /* 16 */
-      /* The total number of reliable EIGRP unicast packets sent
-         on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPMCASTEXCEPTS:           /* 17 */
-      /* The total number of EIGRP multicast exception transmissions */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPCRPKTS:           /* 18 */
-      /* The total number EIGRP Conditional-Receive packets sent on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPACKSSUPPRESSED:           /* 19 */
-      /* The total number of individual EIGRP acknowledgement packets that have been
-         suppressed and combined in an already enqueued outbound reliable packet on this interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPRETRANSSENT:           /* 20 */
-      /* The total number EIGRP packet retransmissions sent on the interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPOOSRCVD:           /* 21 */
-      /* The total number of out-of-sequence EIGRP packets received */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPAUTHMODE:           /* 22 */
-      /* The EIGRP authentication mode of the interface */
-      if (eigrp)
-        {
-          return SNMP_INTEGER(1);
-        }
-      else
-        return SNMP_INTEGER (0);
-      break;
-    case EIGRPAUTHKEYCHAIN:            /* 23 */
-      /* The name of the authentication key-chain configured
-         on this interface. */
-      keylist = keychain_list_get();
-      for (ALL_LIST_ELEMENTS (keylist, node, nnode, keychain))
-        {
-          return (u_char *) keychain->name;
-        }
-      if (eigrp && keychain)
-        {
-          *var_len = str_len (keychain->name);
-          return (u_char *) keychain->name;
-        }
-      else
-        return (u_char *) "TEST";
-      break;
-    default:
-      return NULL;
-    }
-  return NULL;
+       struct eigrp *eigrp;
+       struct listnode *node, *nnode;
+       struct keychain *keychain;
+       struct list *keylist;
+
+       eigrp = eigrp_lookup();
+
+       /* Check whether the instance identifier is valid */
+       if (smux_header_generic(v, name, length, exact, var_len, write_method)
+           == MATCH_FAILED)
+               return NULL;
+
+       /* Return the current value of the variable */
+       switch (v->magic) {
+       case EIGRPPEERCOUNT: /* 3 */
+               /* The number of EIGRP adjacencies currently formed with
+                  peers reached through this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(eigrp_neighbor_count(eigrp));
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPXMITRELIABLEQ: /* 4 */
+               /* The number of EIGRP packets currently waiting in the reliable
+                  transport transmission queue */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPXMITUNRELIABLEQ: /* 5 */
+               /* The number of EIGRP packets currently waiting in the
+                  unreliable
+                  transport transmission queue */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPMEANSRTT: /* 6 */
+               /* The average of all the computed smooth round trip time values
+                  for a packet to and from all peers established on this
+                  interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPACINGRELIABLE: /* 7 */
+               /* The configured time interval between EIGRP packet
+                * transmissions */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPACINGUNRELIABLE: /* 8 */
+               /* The configured time interval between EIGRP packet
+                  transmissions
+                  on the interface when the unreliable transport method is used
+                  */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPMFLOWTIMER: /* 9 */
+               /* The configured multicast flow control timer value */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPPENDINGROUTES: /* 10 */
+               /* The number of queued EIGRP routing updates awaiting
+                * transmission */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPHELLOINTERVAL: /* 11 */
+               /* The configured time interval between Hello packet
+                * transmissions */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPXMITNEXTSERIAL: /* 12 */
+               /* The serial number of the next EIGRP packet that is to be
+                  queued
+                  for transmission */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPUMCASTS: /* 13 */
+               /* The total number of unreliable EIGRP multicast packets sent
+                  on this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPRMCASTS: /* 14 */
+               /* The total number of reliable EIGRP multicast packets sent
+                  on this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPUUCASTS: /* 15 */
+               /* The total number of unreliable EIGRP unicast packets sent
+                  on this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPRUCASTS: /* 16 */
+               /* The total number of reliable EIGRP unicast packets sent
+                  on this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPMCASTEXCEPTS: /* 17 */
+               /* The total number of EIGRP multicast exception transmissions
+                */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPCRPKTS: /* 18 */
+               /* The total number EIGRP Conditional-Receive packets sent on
+                * this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPACKSSUPPRESSED: /* 19 */
+               /* The total number of individual EIGRP acknowledgement packets
+                  that have been
+                  suppressed and combined in an already enqueued outbound
+                  reliable packet on this interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPRETRANSSENT: /* 20 */
+               /* The total number EIGRP packet retransmissions sent on the
+                * interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPOOSRCVD: /* 21 */
+               /* The total number of out-of-sequence EIGRP packets received */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPAUTHMODE: /* 22 */
+               /* The EIGRP authentication mode of the interface */
+               if (eigrp) {
+                       return SNMP_INTEGER(1);
+               } else
+                       return SNMP_INTEGER(0);
+               break;
+       case EIGRPAUTHKEYCHAIN: /* 23 */
+               /* The name of the authentication key-chain configured
+                  on this interface. */
+               keylist = keychain_list_get();
+               for (ALL_LIST_ELEMENTS(keylist, node, nnode, keychain)) {
+                       return (uint8_t *)keychain->name;
+               }
+               if (eigrp && keychain) {
+                       *var_len = str_len(keychain->name);
+                       return (uint8_t *)keychain->name;
+               } else
+                       return (uint8_t *)"TEST";
+               break;
+       default:
+               return NULL;
+       }
+       return NULL;
 }
 
 /* Register EIGRP-MIB. */
-void
-eigrp_snmp_init ()
+void eigrp_snmp_init()
 {
-  eigrp_snmp_iflist = list_new ();
-  smux_init (eigrp_om->master);
-  REGISTER_MIB("ciscoEigrpMIB", eigrp_variables, variable, eigrp_oid);
+       eigrp_snmp_iflist = list_new();
+       smux_init(eigrp_om->master);
+       REGISTER_MIB("ciscoEigrpMIB", eigrp_variables, variable, eigrp_oid);
 }
 #endif