Add 'primary' configuration option.

This commit is contained in:
Ondrej Zajicek 2009-05-29 13:32:24 +02:00
parent 7c3d06b087
commit 6f68f066b6
2 changed files with 16 additions and 0 deletions

View file

@ -68,6 +68,7 @@ kif_proto_start: proto_start DEVICE {
cf_kif = this_proto = proto_config_new(&proto_unix_iface, sizeof(struct kif_config)); cf_kif = this_proto = proto_config_new(&proto_unix_iface, sizeof(struct kif_config));
this_proto->preference = DEF_PREF_DIRECT; this_proto->preference = DEF_PREF_DIRECT;
THIS_KIF->scan_time = 60; THIS_KIF->scan_time = 60;
init_list(&THIS_KIF->primary);
krt_if_construct(THIS_KIF); krt_if_construct(THIS_KIF);
} }
; ;
@ -81,6 +82,13 @@ kif_item:
/* Scan time of 0 means scan on startup only */ /* Scan time of 0 means scan on startup only */
THIS_KIF->scan_time = $3; THIS_KIF->scan_time = $3;
} }
| PRIMARY TEXT prefix_or_ipa {
struct kif_primary_item *kpi = cfg_alloc(sizeof (struct kif_primary_item));
kpi->pattern = $2;
kpi->prefix = $3.addr;
kpi->pxlen = $3.len;
add_tail(&THIS_KIF->primary, &kpi->n);
}
; ;
CF_CODE CF_CODE

View file

@ -86,10 +86,18 @@ void krt_got_route_async(struct krt_proto *p, struct rte *e, int new);
extern struct protocol proto_unix_iface; extern struct protocol proto_unix_iface;
struct kif_primary_item {
node n;
byte *pattern;
ip_addr prefix;
int pxlen;
};
struct kif_config { struct kif_config {
struct proto_config c; struct proto_config c;
struct krt_if_params iface; struct krt_if_params iface;
int scan_time; /* How often we re-scan interfaces */ int scan_time; /* How often we re-scan interfaces */
list primary; /* Preferences for primary addresses */
}; };
struct kif_proto { struct kif_proto {