summaryrefslogtreecommitdiffstats
path: root/src/iftable.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2009-01-07 01:17:39 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2009-01-07 01:17:39 +0100
commit6833d97a2314ddce5a7a65402c0afba37e8913c4 (patch)
tree992ec62fc1ab94c031dc9afcbeb89a5cd32bffed /src/iftable.c
parentbcf809779eb43adfc598746e02d522751d9aaeac (diff)
iftable: add nlif_get_ifflags to get the network interface flags
This patch adds the nlif_get_ifflags to get the interface flags. This patch also modifies the example file to display if a network interface is running or not. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/iftable.c')
-rw-r--r--src/iftable.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/iftable.c b/src/iftable.c
index 3a4b0cb..f316217 100644
--- a/src/iftable.c
+++ b/src/iftable.c
@@ -173,6 +173,39 @@ int nlif_index2name(struct nlif_handle *h,
return -1;
}
+/** Get the flags for an ifindex
+ *
+ * \param nlif_handle A pointer to a ::nlif_handle created
+ * \param index ifindex to be resolved
+ * \param flags pointer to variable used to store the interface flags
+ * \return -1 on error, 1 on success
+ */
+int nlif_get_ifflags(const struct nlif_handle *h,
+ unsigned int index,
+ unsigned int *flags)
+{
+ unsigned int hash;
+ struct ifindex_node *this;
+
+ assert(h != NULL);
+ assert(flags != NULL);
+
+ if (index == 0) {
+ errno = ENOENT;
+ return -1;
+ }
+
+ hash = index & 0xF;
+ list_for_each_entry(this, &h->ifindex_hash[hash], head) {
+ if (this->index == index) {
+ *flags = this->flags;
+ return 1;
+ }
+ }
+ errno = ENOENT;
+ return -1;
+}
+
/** Initialize interface table
*
* Initialize rtnl interface and interface table