diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-09-05 05:49:11 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-09-05 05:49:11 +0200 |
commit | 818abd9f2f42c36a0f91ff6d29a9a635398216e0 (patch) | |
tree | 93d798fa855cc8acc6bbd5754ab2b50186ef42c2 /interface-ip.h | |
parent | f026eb8247d74f88a6b704af866879867574f9f0 (diff) |
move ip related functions and data structures to a separate header file
Diffstat (limited to 'interface-ip.h')
-rw-r--r-- | interface-ip.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/interface-ip.h b/interface-ip.h new file mode 100644 index 0000000..2f5cf85 --- /dev/null +++ b/interface-ip.h @@ -0,0 +1,48 @@ +#ifndef __INTERFACE_IP_H +#define __INTERFACE_IP_H + +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; +}; + +int interface_add_address(struct interface *iface, struct device_addr *addr); +void interface_del_address(struct interface *iface, struct device_addr *addr); +void interface_del_ctx_addr(struct interface *iface, void *ctx); + +int interface_add_route(struct interface *iface, struct device_route *route); +void interface_del_route(struct interface *iface, struct device_route *route); +void interface_del_all_routes(struct interface *iface); + +#endif |