summaryrefslogtreecommitdiffhomepage
path: root/device.h
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-05-02 23:00:30 +0200
committerFelix Fietkau <nbd@openwrt.org>2011-05-02 23:00:30 +0200
commit273550337f70b8b2175875e0c4f0bbd483cfe326 (patch)
treeb433b4dcc731d61f750692a2a531c21e5eac4f26 /device.h
parent85218c601b0f5895f9025910643761930c02eb1a (diff)
move interface address handling to the device module, clean up arguments to system_{add,del}_addr
Diffstat (limited to 'device.h')
-rw-r--r--device.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/device.h b/device.h
index bbb78d8..0f8d382 100644
--- a/device.h
+++ b/device.h
@@ -2,6 +2,7 @@
#define __LL_H
#include <libubox/avl.h>
+#include <netinet/in.h>
struct device;
struct device_hotplug_ops;
@@ -22,6 +23,42 @@ enum {
DEV_OPT_TXQUEUELEN = (1 << 2)
};
+enum device_addr_flags {
+ /* address family for routes and addresses */
+ DEVADDR_INET4 = (0 << 0),
+ DEVADDR_INET6 = (1 << 0),
+ DEVADDR_FAMILY = DEVADDR_INET4 | DEVADDR_INET6,
+
+ /* device route (no gateway) */
+ DEVADDR_DEVICE = (1 << 1),
+};
+
+union if_addr {
+ struct in_addr in;
+ struct in6_addr in6;
+};
+
+struct device_addr {
+ struct list_head list;
+ void *ctx;
+
+ enum device_addr_flags flags;
+
+ unsigned int mask;
+ union if_addr addr;
+};
+
+struct device_route {
+ struct list_head list;
+ void *ctx;
+
+ enum device_addr_flags flags;
+
+ unsigned int mask;
+ union if_addr addr;
+ union if_addr nexthop;
+};
+
/*
* link layer device. typically represents a linux network device.
* can be used to support VLANs as well