summaryrefslogtreecommitdiff
path: root/ripd/rip_snmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'ripd/rip_snmp.c')
-rw-r--r--ripd/rip_snmp.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/ripd/rip_snmp.c b/ripd/rip_snmp.c
index 93773bc5..c1bec762 100644
--- a/ripd/rip_snmp.c
+++ b/ripd/rip_snmp.c
@@ -136,7 +136,7 @@ struct variable rip_variables[] =
{RIP2PEERADDRESS, IPADDRESS, RONLY, rip2PeerTable,
/* RIP Peer Table. */
3, {4, 1, 1}},
- {RIP2PEERDOMAIN, INTEGER, RONLY, rip2PeerTable,
+ {RIP2PEERDOMAIN, STRING, RONLY, rip2PeerTable,
3, {4, 1, 2}},
{RIP2PEERLASTUPDATE, TIMETICKS, RONLY, rip2PeerTable,
3, {4, 1, 3}},
@@ -419,15 +419,19 @@ rip2IfConfReceive (struct rip_interface *ri)
#define rip1OrRip2 3
#define doNotReceive 4
+ int recvv;
+
if (! ri->running)
return doNotReceive;
- if (ri->ri_receive == RI_RIP_VERSION_1_AND_2)
+ recvv = (ri->ri_receive == RI_RIP_UNSPEC) ? rip->version_recv :
+ ri->ri_receive;
+ if (recvv == RI_RIP_VERSION_1_AND_2)
return rip1OrRip2;
- else if (ri->ri_receive & RIPv2)
- return ripVersion2;
- else if (ri->ri_receive & RIPv1)
- return ripVersion1;
+ else if (recvv & RIPv2)
+ return rip2;
+ else if (recvv & RIPv1)
+ return rip1;
else
return doNotReceive;
}
@@ -508,6 +512,7 @@ rip2PeerTable (struct variable *v, oid name[], size_t *length,
int exact, size_t *val_len, WriteMethod **write_method)
{
static struct in_addr addr;
+ static int domain = 0;
static int version;
/* static time_t uptime; */
@@ -527,8 +532,8 @@ rip2PeerTable (struct variable *v, oid name[], size_t *length,
return (u_char *) &peer->addr;
case RIP2PEERDOMAIN:
- *val_len = sizeof (int);
- return (u_char *) &peer->domain;
+ *val_len = 2;
+ return (u_char *) &domain;
case RIP2PEERLASTUPDATE:
#if 0