Made IP address enumeration more flexible

Also added an option to enumerate addresses on ignored interfaces.
This commit is contained in:
Tobias Brunner
2012-09-21 18:16:26 +02:00
parent 308ec0b7df
commit 4106aea8e4
10 changed files with 50 additions and 53 deletions
+22 -6
View File
@@ -23,11 +23,30 @@
#define KERNEL_NET_H_
typedef struct kernel_net_t kernel_net_t;
typedef enum kernel_address_type_t kernel_address_type_t;
#include <utils/enumerator.h>
#include <utils/host.h>
#include <plugins/plugin.h>
/**
* Type of addresses (e.g. when enumerating them)
*/
enum kernel_address_type_t {
/** normal addresses (on regular, up, non-ignored) interfaces */
ADDR_TYPE_REGULAR = 0,
/** addresses on down interfaces */
ADDR_TYPE_DOWN = (1 << 0),
/** addresses on ignored interfaces */
ADDR_TYPE_IGNORED = (1 << 1),
/** addresses on loopback interfaces */
ADDR_TYPE_LOOPBACK = (1 << 2),
/** virtual IP addresses */
ADDR_TYPE_VIRTUAL = (1 << 3),
/** to enumerate all available addresses */
ADDR_TYPE_ALL = (1 << 4) - 1,
};
/**
* Interface to the network subsystem of the kernel.
*
@@ -81,14 +100,11 @@ struct kernel_net_t {
* enumerator gets destroyed.
* The hosts are read-only, do not modify of free.
*
* @param include_down_ifaces TRUE to enumerate addresses from down interfaces
* @param include_virtual_ips TRUE to enumerate virtual IP addresses
* @param include_loopback TRUE to enumerate addresses on loopback interfaces
* @return enumerator over host_t's
* @param which a combination of address types to enumerate
* @return enumerator over host_t's
*/
enumerator_t *(*create_address_enumerator) (kernel_net_t *this,
bool include_down_ifaces, bool include_virtual_ips,
bool include_loopback);
kernel_address_type_t which);
/**
* Add a virtual IP to an interface.