summaryrefslogtreecommitdiff
path: root/sysdep/unix/krt.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdep/unix/krt.h')
-rw-r--r--sysdep/unix/krt.h33
1 files changed, 19 insertions, 14 deletions
diff --git a/sysdep/unix/krt.h b/sysdep/unix/krt.h
index d4a8717e..b627882d 100644
--- a/sysdep/unix/krt.h
+++ b/sysdep/unix/krt.h
@@ -15,7 +15,9 @@ struct krt_proto;
struct kif_config;
struct kif_proto;
-#include "lib/krt-sys.h"
+#include "nest/iface.h"
+#include "sysdep/config.h"
+#include CONFIG_INCLUDE_KRTSYS_H
/* Flags stored in net->n.flags, rest are in nest/route.h */
@@ -44,10 +46,9 @@ extern struct protocol proto_unix_kernel;
struct krt_config {
struct proto_config c;
struct krt_params sys; /* Sysdep params */
+ btime scan_time; /* How often we re-scan routes */
int persist; /* Keep routes when we exit */
- int scan_time; /* How often we re-scan routes */
int learn; /* Learn routes from other sources */
- int devroutes; /* Allow export of device routes */
int graceful_restart; /* Regard graceful restart recovery */
int merge_paths; /* Exported routes are merged for ECMP */
};
@@ -65,6 +66,7 @@ struct krt_proto {
#endif
node krt_node; /* Node in krt_proto_list */
+ byte af; /* Kernel address family (AF_*) */
byte ready; /* Initial feed has been finished */
byte initialized; /* First scan has been finished */
byte reload; /* Next scan is doing reload */
@@ -93,18 +95,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;
- ip_addr prefix;
- int pxlen;
-};
-
struct kif_config {
struct proto_config c;
struct kif_params sys; /* Sysdep params */
- int scan_time; /* How often we re-scan interfaces */
- list primary; /* Preferences for primary addresses (struct kif_primary_item) */
+
+ list iface_list; /* List of iface configs (struct kif_iface_config) */
+ btime scan_time; /* How often we re-scan interfaces */
+};
+
+struct kif_iface_config {
+ struct iface_patt i;
+
+ ip_addr pref_v4;
+ ip_addr pref_v6;
+ ip_addr pref_ll;
};
struct kif_proto {
@@ -112,10 +116,11 @@ struct kif_proto {
struct kif_state sys; /* Sysdep state */
};
-struct kif_proto *kif_proto;
+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 +155,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