diff options
Diffstat (limited to 'src/libhydra/kernel')
-rw-r--r-- | src/libhydra/kernel/kernel_interface.c | 8 | ||||
-rw-r--r-- | src/libhydra/kernel/kernel_interface.h | 9 | ||||
-rw-r--r-- | src/libhydra/kernel/kernel_net.h | 28 |
3 files changed, 28 insertions, 17 deletions
diff --git a/src/libhydra/kernel/kernel_interface.c b/src/libhydra/kernel/kernel_interface.c index 7bdc0bed8..7bfda2486 100644 --- a/src/libhydra/kernel/kernel_interface.c +++ b/src/libhydra/kernel/kernel_interface.c @@ -302,15 +302,13 @@ METHOD(kernel_interface_t, get_interface, bool, } METHOD(kernel_interface_t, create_address_enumerator, enumerator_t*, - private_kernel_interface_t *this, bool include_down_ifaces, - bool include_virtual_ips, bool include_loopback) + private_kernel_interface_t *this, kernel_address_type_t which) { if (!this->net) { return enumerator_create_empty(); } - return this->net->create_address_enumerator(this->net, include_down_ifaces, - include_virtual_ips, include_loopback); + return this->net->create_address_enumerator(this->net, which); } METHOD(kernel_interface_t, add_ip, status_t, @@ -423,7 +421,7 @@ METHOD(kernel_interface_t, get_address_by_ts, status_t, } host->destroy(host); - addrs = create_address_enumerator(this, TRUE, TRUE, TRUE); + addrs = create_address_enumerator(this, ADDR_TYPE_ALL); while (addrs->enumerate(addrs, (void**)&host)) { if (ts->includes(ts, host)) diff --git a/src/libhydra/kernel/kernel_interface.h b/src/libhydra/kernel/kernel_interface.h index dce3ef222..c09f07bd9 100644 --- a/src/libhydra/kernel/kernel_interface.h +++ b/src/libhydra/kernel/kernel_interface.h @@ -321,14 +321,11 @@ struct kernel_interface_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_interface_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. diff --git a/src/libhydra/kernel/kernel_net.h b/src/libhydra/kernel/kernel_net.h index 1f56bf8ab..10350d644 100644 --- a/src/libhydra/kernel/kernel_net.h +++ b/src/libhydra/kernel/kernel_net.h @@ -23,12 +23,31 @@ #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. * * The kernel network interface handles the communication with 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. |