From 17aab88b83a0e50ab31f18beec78ab07ce864883 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 2 May 2011 21:32:37 +0200 Subject: move address handling to common code --- interface.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'interface.h') diff --git a/interface.h b/interface.h index e3b5ff7..e19d61d 100644 --- a/interface.h +++ b/interface.h @@ -1,6 +1,7 @@ #ifndef __NETIFD_INTERFACE_H #define __NETIFD_INTERFACE_H +#include #include "device.h" struct interface; @@ -26,6 +27,42 @@ struct interface_error { const char *data[]; }; +enum interface_addr_flags { + /* address family for routes and addresses */ + IFADDR_INET4 = (0 << 0), + IFADDR_INET6 = (1 << 0), + IFADDR_FAMILY = IFADDR_INET4 | IFADDR_INET6, + + /* device route (no gateway) */ + IFADDR_DEVICE = (1 << 1), +}; + +union if_addr { + struct in_addr in; + struct in6_addr in6; +}; + +struct interface_addr { + struct list_head list; + void *ctx; + + enum interface_addr_flags flags; + + unsigned int mask; + union if_addr addr; +}; + +struct interface_route { + struct list_head list; + void *ctx; + + enum interface_addr_flags flags; + + unsigned int mask; + union if_addr addr; + union if_addr nexthop; +}; + /* * interface configuration */ @@ -48,6 +85,8 @@ struct interface { /* primary protocol state */ struct interface_proto_state *proto; + struct list_head address, routes; + /* errors/warnings while trying to bring up the interface */ struct list_head errors; @@ -71,6 +110,10 @@ void interface_add_error(struct interface *iface, const char *subsystem, int interface_attach_bridge(struct interface *iface, struct uci_section *s); +int interface_add_address(struct interface *iface, struct interface_addr *addr); +void interface_del_address(struct interface *iface, struct interface_addr *addr); +void interface_del_ctx_addr(struct interface *iface, void *ctx); + void start_pending_interfaces(void); #endif -- cgit v1.2.3