summaryrefslogtreecommitdiff
path: root/interface-ip.h
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2013-01-08 18:52:32 +0100
committerFelix Fietkau <nbd@openwrt.org>2013-01-15 11:12:53 +0100
commitd7f7f002e3d168aedb5f2bc92180f5966482d7d9 (patch)
tree05b56547fd087c3865416e290d7e8289d41f2860 /interface-ip.h
parent9908adbd9a31c92f13b05f0c057d4429edbc5184 (diff)
downloadnetifd-d7f7f002e3d168aedb5f2bc92180f5966482d7d9.tar.gz
Initial IPv6 prefix support
Signed-off-by: Steven Barth <steven@midlink.org>
Diffstat (limited to 'interface-ip.h')
-rw-r--r--interface-ip.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/interface-ip.h b/interface-ip.h
index 1a82ad6..054ed40 100644
--- a/interface-ip.h
+++ b/interface-ip.h
@@ -40,6 +40,28 @@ union if_addr {
struct in6_addr in6;
};
+struct device_prefix {
+ struct vlist_node node;
+ struct list_head head;
+ struct vlist_tree *assignments;
+ struct interface *iface;
+ uint64_t avail;
+ time_t valid_until;
+ time_t preferred_until;
+
+ struct in6_addr addr;
+ uint8_t length;
+};
+
+struct device_prefix_assignment {
+ struct vlist_node node;
+ struct device_prefix *prefix;
+ struct in6_addr addr;
+ bool enabled;
+ uint8_t length;
+ char *name;
+};
+
struct device_addr {
struct vlist_node node;
bool enabled;
@@ -48,6 +70,10 @@ struct device_addr {
uint32_t broadcast;
uint32_t point_to_point;
+ /* ipv6 only */
+ time_t valid_until;
+ time_t preferred_until;
+
/* must be last */
enum device_addr_flags flags;
unsigned int mask;
@@ -83,6 +109,7 @@ struct dns_search_domain {
};
extern const struct config_param_list route_attr_list;
+extern struct list_head prefixes;
void interface_ip_init(struct interface *iface);
void interface_add_dns_server(struct interface_ip_settings *ip, const char *str);
@@ -100,4 +127,10 @@ void interface_ip_update_metric(struct interface_ip_settings *ip, int metric);
struct interface *interface_ip_add_target_route(union if_addr *addr, bool v6);
+void interface_ip_set_prefix_assignment(struct device_prefix *prefix,
+ struct interface *iface, uint8_t length);
+void interface_ip_add_device_prefix(struct interface *iface, struct in6_addr *addr,
+ uint8_t length, time_t valid_until, time_t preferred_until);
+void interface_ip_set_ula_prefix(const char *prefix);
+
#endif