From d3f0e8c9dbb98159d32baffdf9b45ffdeb76d7e8 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Wed, 25 Jun 2008 09:35:13 -0700 Subject: [PATCH] inetmib1: Use a helper function to set the Oid with an IP address-based instance. --- dlls/inetmib1/main.c | 61 +++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 38 deletions(-) diff --git a/dlls/inetmib1/main.c b/dlls/inetmib1/main.c index e7bb28e745a..3ce7b6ce13d 100644 --- a/dlls/inetmib1/main.c +++ b/dlls/inetmib1/main.c @@ -431,6 +431,25 @@ static AsnInteger32 getItemAndIpAddressInstanceFromOid(AsnObjectIdentifier *oid, return ret; } +static void setOidWithItemAndIpAddr(AsnObjectIdentifier *dst, + AsnObjectIdentifier *base, UINT item, DWORD addr) +{ + UINT id; + BYTE *ptr; + AsnObjectIdentifier oid; + + SnmpUtilOidCpy(dst, base); + oid.idLength = 1; + oid.ids = &id; + id = item; + SnmpUtilOidAppend(dst, &oid); + for (ptr = (BYTE *)&addr; ptr < (BYTE *)&addr + sizeof(DWORD); ptr++) + { + id = *ptr; + SnmpUtilOidAppend(dst, &oid); + } +} + static struct structToAsnValue mib2IfEntryMap[] = { { FIELD_OFFSET(MIB_IFROW, dwIndex), copyInt }, { FIELD_OFFSET(MIB_IFROW, dwDescrLen), copyLengthPrecededString }, @@ -648,24 +667,8 @@ static BOOL mib2IpAddrQuery(BYTE bPduType, SnmpVarBind *pVarBind, DEFINE_SIZEOF(mib2IpAddrMap), &ipAddrTable->table[tableIndex - 1], item, bPduType, pVarBind); if (!*pErrorStatus && bPduType == SNMP_PDU_GETNEXT) - { - UINT id; - BYTE *ptr; - AsnObjectIdentifier oid; - - SnmpUtilOidCpy(&pVarBind->name, &myOid); - oid.idLength = 1; - oid.ids = &id; - id = item; - SnmpUtilOidAppend(&pVarBind->name, &oid); - for (ptr = (BYTE *)&ipAddrTable->table[tableIndex - 1].dwAddr; - ptr < (BYTE *)&ipAddrTable->table[tableIndex - 1].dwAddr + - sizeof(DWORD); ptr++) - { - id = *ptr; - SnmpUtilOidAppend(&pVarBind->name, &oid); - } - } + setOidWithItemAndIpAddr(&pVarBind->name, &myOid, item, + ipAddrTable->table[tableIndex - 1].dwAddr); } break; case SNMP_PDU_SET: @@ -733,26 +736,8 @@ static BOOL mib2IpRouteQuery(BYTE bPduType, SnmpVarBind *pVarBind, DEFINE_SIZEOF(mib2IpRouteMap), &ipRouteTable->table[tableIndex - 1], item, bPduType, pVarBind); if (!*pErrorStatus && bPduType == SNMP_PDU_GETNEXT) - { - UINT id; - BYTE *ptr; - AsnObjectIdentifier oid; - - SnmpUtilOidCpy(&pVarBind->name, &myOid); - oid.idLength = 1; - oid.ids = &id; - id = item; - SnmpUtilOidAppend(&pVarBind->name, &oid); - for (ptr = - (BYTE *)&ipRouteTable->table[tableIndex - 1].dwForwardDest; - ptr < - (BYTE *)&ipRouteTable->table[tableIndex - 1].dwForwardDest - + sizeof(DWORD); ptr++) - { - id = *ptr; - SnmpUtilOidAppend(&pVarBind->name, &oid); - } - } + setOidWithItemAndIpAddr(&pVarBind->name, &myOid, item, + ipRouteTable->table[tableIndex - 1].dwForwardDest); } break; case SNMP_PDU_SET: