move generic sigar_net_connection_list_get impl to sigar.c
This commit is contained in:
		
							parent
							
								
									bf6984b477
								
							
						
					
					
						commit
						b1798c3e2f
					
				@ -1857,42 +1857,6 @@ int sigar_net_connection_walk(sigar_net_connection_walker_t *walker)
 | 
				
			|||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int net_connection_list_walker(sigar_net_connection_walker_t *walker,
 | 
					 | 
				
			||||||
                                      sigar_net_connection_t *conn)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    sigar_net_connection_list_t *connlist =
 | 
					 | 
				
			||||||
        (sigar_net_connection_list_t *)walker->data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    SIGAR_NET_CONNLIST_GROW(connlist);
 | 
					 | 
				
			||||||
    memcpy(&connlist->data[connlist->number++],
 | 
					 | 
				
			||||||
           conn, sizeof(*conn));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return SIGAR_OK; /* continue loop */
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int sigar_net_connection_list_get(sigar_t *sigar,
 | 
					 | 
				
			||||||
                                  sigar_net_connection_list_t *connlist,
 | 
					 | 
				
			||||||
                                  int flags)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int status;
 | 
					 | 
				
			||||||
    sigar_net_connection_walker_t walker;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    sigar_net_connection_list_create(connlist);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    walker.sigar = sigar;
 | 
					 | 
				
			||||||
    walker.flags = flags;
 | 
					 | 
				
			||||||
    walker.data = connlist;
 | 
					 | 
				
			||||||
    walker.add_connection = net_connection_list_walker;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    status = sigar_net_connection_walk(&walker);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (status != SIGAR_OK) {
 | 
					 | 
				
			||||||
        sigar_net_connection_list_destroy(sigar, connlist);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return status;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef DARWIN
 | 
					#ifndef DARWIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _KERNEL
 | 
					#define _KERNEL
 | 
				
			||||||
 | 
				
			|||||||
@ -35,4 +35,6 @@ struct sigar_t {
 | 
				
			|||||||
#define SIGAR_EPERM_KMEM (SIGAR_OS_START_ERROR+EACCES)
 | 
					#define SIGAR_EPERM_KMEM (SIGAR_OS_START_ERROR+EACCES)
 | 
				
			||||||
#define SIGAR_EPROC_NOENT (SIGAR_OS_START_ERROR+2)
 | 
					#define SIGAR_EPROC_NOENT (SIGAR_OS_START_ERROR+2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SIGAR_USE_NET_CONNECTION_LIST_WALKER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* SIGAR_OS_H */
 | 
					#endif /* SIGAR_OS_H */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										42
									
								
								src/sigar.c
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								src/sigar.c
									
									
									
									
									
								
							@ -718,6 +718,48 @@ SIGAR_DECLARE(const char *)sigar_net_connection_state_get(int state)
 | 
				
			|||||||
        return "UNKNOWN";
 | 
					        return "UNKNOWN";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SIGAR_USE_NET_CONNECTION_LIST_WALKER
 | 
				
			||||||
 | 
					/* 
 | 
				
			||||||
 | 
					 * implement sigar_net_connection_list_get using sigar_net_connection_walk
 | 
				
			||||||
 | 
					 * linux has its own list_get impl.  other platforms still need walker impl
 | 
				
			||||||
 | 
					 */  
 | 
				
			||||||
 | 
					static int net_connection_list_walker(sigar_net_connection_walker_t *walker,
 | 
				
			||||||
 | 
					                                      sigar_net_connection_t *conn)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    sigar_net_connection_list_t *connlist =
 | 
				
			||||||
 | 
					        (sigar_net_connection_list_t *)walker->data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SIGAR_NET_CONNLIST_GROW(connlist);
 | 
				
			||||||
 | 
					    memcpy(&connlist->data[connlist->number++],
 | 
				
			||||||
 | 
					           conn, sizeof(*conn));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return SIGAR_OK; /* continue loop */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int sigar_net_connection_list_get(sigar_t *sigar,
 | 
				
			||||||
 | 
					                                  sigar_net_connection_list_t *connlist,
 | 
				
			||||||
 | 
					                                  int flags)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int status;
 | 
				
			||||||
 | 
					    sigar_net_connection_walker_t walker;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sigar_net_connection_list_create(connlist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    walker.sigar = sigar;
 | 
				
			||||||
 | 
					    walker.flags = flags;
 | 
				
			||||||
 | 
					    walker.data = connlist;
 | 
				
			||||||
 | 
					    walker.add_connection = net_connection_list_walker;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    status = sigar_net_connection_walk(&walker);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (status != SIGAR_OK) {
 | 
				
			||||||
 | 
					        sigar_net_connection_list_destroy(sigar, connlist);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return status;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#if defined(__linux__) /* XXX need to implement walker on other platforms */
 | 
					#if defined(__linux__) /* XXX need to implement walker on other platforms */
 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
    sigar_net_stat_t *netstat;
 | 
					    sigar_net_stat_t *netstat;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user