summaryrefslogtreecommitdiff
path: root/sysdep/unix/krt.h
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2017-12-07 13:06:01 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2017-12-07 13:06:01 +0100
commit153f02da3bce1f3f1a99295648679c71327e8319 (patch)
treeb7b7acf8026ba182f3a81f2d6da975b0b1524972 /sysdep/unix/krt.h
parent4ae3ee1200b386219673c2168eae996c6207b077 (diff)
Nest: Maintain separate IPv4, IPv6 and LLv6 preferred addresses
Also redesign preferred address selection and update protocols to use appropriate preferred address. Based on a previous work by Jan Maria Matejka.
Diffstat (limited to 'sysdep/unix/krt.h')
-rw-r--r--sysdep/unix/krt.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/sysdep/unix/krt.h b/sysdep/unix/krt.h
index cb404de3..089c97ad 100644
--- a/sysdep/unix/krt.h
+++ b/sysdep/unix/krt.h
@@ -94,17 +94,20 @@ void krt_got_route_async(struct krt_proto *p, struct rte *e, int new);
extern struct protocol proto_unix_iface;
-struct kif_primary_item {
- node n;
- byte *pattern;
- net_addr addr;
-};
-
struct kif_config {
struct proto_config c;
struct kif_params sys; /* Sysdep params */
+
+ list iface_list; /* List of iface configs (struct kif_iface_config) */
int scan_time; /* How often we re-scan interfaces */
- list primary; /* Preferences for primary addresses (struct kif_primary_item) */
+};
+
+struct kif_iface_config {
+ struct iface_patt i;
+
+ ip_addr pref_v4;
+ ip_addr pref_v6;
+ ip_addr pref_ll;
};
struct kif_proto {
@@ -116,6 +119,7 @@ extern struct kif_proto *kif_proto;
#define KIF_CF ((struct kif_config *)p->p.cf)
+struct kif_iface_config * kif_get_iface_config(struct iface *iface);
struct proto_config * krt_init_config(int class);
@@ -150,6 +154,6 @@ void kif_sys_copy_config(struct kif_config *, struct kif_config *);
void kif_do_scan(struct kif_proto *);
-struct ifa *kif_get_primary_ip(struct iface *i);
+int kif_update_sysdep_addr(struct iface *i);
#endif