From 273550337f70b8b2175875e0c4f0bbd483cfe326 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 2 May 2011 23:00:30 +0200 Subject: move interface address handling to the device module, clean up arguments to system_{add,del}_addr --- device.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'device.h') 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 +#include 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 -- cgit v1.2.3