Merge branch 'sigar-1.6'
This commit is contained in:
		
						commit
						a45a09478f
					
				@ -739,6 +739,63 @@ static int sigar_get_mib_info(sigar_t *sigar,
 | 
				
			|||||||
    return get_mib_info(sigar->mib, parms);
 | 
					    return get_mib_info(sigar->mib, parms);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* wrapper around get_physical_stat() */
 | 
				
			||||||
 | 
					static int sigar_get_physical_stat(sigar_t *sigar, int *count)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int status;
 | 
				
			||||||
 | 
					    unsigned int len;
 | 
				
			||||||
 | 
					    struct nmparms parms;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    len = sizeof(*count);
 | 
				
			||||||
 | 
					    parms.objid = ID_ifNumber;
 | 
				
			||||||
 | 
					    parms.buffer = count;
 | 
				
			||||||
 | 
					    parms.len = &len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((status = sigar_get_mib_info(sigar, &parms)) != SIGAR_OK) {
 | 
				
			||||||
 | 
					        return status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    len = sizeof(nmapi_phystat) * *count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (sigar->ifconf_len < len) {
 | 
				
			||||||
 | 
					        sigar->ifconf_buf = realloc(sigar->ifconf_buf, len);
 | 
				
			||||||
 | 
					        sigar->ifconf_len = len;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (get_physical_stat(sigar->ifconf_buf, &len) < 0) {
 | 
				
			||||||
 | 
					        return errno;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else {
 | 
				
			||||||
 | 
					        return SIGAR_OK;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SIGAR_IF_NAMESIZE 16
 | 
				
			||||||
 | 
					/* hpux if_indextoname() does not work as advertised in 11.11 */
 | 
				
			||||||
 | 
					static int sigar_if_indextoname(sigar_t *sigar,
 | 
				
			||||||
 | 
					                                char *name,
 | 
				
			||||||
 | 
					                                int index)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int i, status, count;
 | 
				
			||||||
 | 
					    nmapi_phystat *stat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((status = sigar_get_physical_stat(sigar, &count) != SIGAR_OK)) {
 | 
				
			||||||
 | 
					        return status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (i=0, stat = (nmapi_phystat *)sigar->ifconf_buf;
 | 
				
			||||||
 | 
					         i<count;
 | 
				
			||||||
 | 
					         i++, stat++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (stat->if_entry.ifIndex == index) {
 | 
				
			||||||
 | 
					            strncpy(name, stat->nm_device, SIGAR_IF_NAMESIZE);
 | 
				
			||||||
 | 
					            return SIGAR_OK;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return ENXIO;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int sigar_net_route_list_get(sigar_t *sigar,
 | 
					int sigar_net_route_list_get(sigar_t *sigar,
 | 
				
			||||||
                             sigar_net_route_list_t *routelist)
 | 
					                             sigar_net_route_list_t *routelist)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -790,6 +847,8 @@ int sigar_net_route_list_get(sigar_t *sigar,
 | 
				
			|||||||
        sigar_net_address_set(route->gateway,
 | 
					        sigar_net_address_set(route->gateway,
 | 
				
			||||||
                              ent->NextHop);
 | 
					                              ent->NextHop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sigar_if_indextoname(sigar, route->ifname, ent->IfIndex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        route->flags = SIGAR_RTF_UP;
 | 
					        route->flags = SIGAR_RTF_UP;
 | 
				
			||||||
        if ((ent->Dest == 0) &&
 | 
					        if ((ent->Dest == 0) &&
 | 
				
			||||||
            (ent->Mask == 0))
 | 
					            (ent->Mask == 0))
 | 
				
			||||||
@ -807,31 +866,13 @@ static int get_mib_ifstat(sigar_t *sigar,
 | 
				
			|||||||
                          const char *name,
 | 
					                          const char *name,
 | 
				
			||||||
                          mib_ifEntry *mib)
 | 
					                          mib_ifEntry *mib)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int status, count, i;
 | 
					    int i, status, count;
 | 
				
			||||||
    unsigned int len;
 | 
					 | 
				
			||||||
    nmapi_phystat *stat;
 | 
					    nmapi_phystat *stat;
 | 
				
			||||||
    struct nmparms parms;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    len = sizeof(count);
 | 
					    if ((status = sigar_get_physical_stat(sigar, &count) != SIGAR_OK)) {
 | 
				
			||||||
    parms.objid = ID_ifNumber;
 | 
					 | 
				
			||||||
    parms.buffer = &count;
 | 
					 | 
				
			||||||
    parms.len = &len;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if ((status = sigar_get_mib_info(sigar, &parms)) != SIGAR_OK) {
 | 
					 | 
				
			||||||
        return status;
 | 
					        return status;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    len = sizeof(nmapi_phystat) * count;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (sigar->ifconf_len < len) {
 | 
					 | 
				
			||||||
        sigar->ifconf_buf = realloc(sigar->ifconf_buf, len);
 | 
					 | 
				
			||||||
        sigar->ifconf_len = len;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (get_physical_stat(sigar->ifconf_buf, &len) < 0) {
 | 
					 | 
				
			||||||
        return errno;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (i=0, stat = (nmapi_phystat *)sigar->ifconf_buf;
 | 
					    for (i=0, stat = (nmapi_phystat *)sigar->ifconf_buf;
 | 
				
			||||||
         i<count;
 | 
					         i<count;
 | 
				
			||||||
         i++, stat++)
 | 
					         i++, stat++)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user