From: Maria Matejka Date: Fri, 5 Aug 2022 08:37:53 +0000 (+0200) Subject: Merge commit '534d0a4b' into thread-next X-Git-Tag: v3.0-alpha1~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a32cee7813dc4e69f480d1b5fa574a159aded5f7;p=thirdparty%2Fbird.git Merge commit '534d0a4b' into thread-next --- a32cee7813dc4e69f480d1b5fa574a159aded5f7 diff --cc sysdep/unix/krt.c index f796a1593,342adee55..cfa9b1ee3 --- a/sysdep/unix/krt.c +++ b/sysdep/unix/krt.c @@@ -576,8 -780,10 +576,9 @@@ krt_got_route_async(struct krt_proto *p } #endif } - rte_free(e); } + /* * Periodic scanning */ diff --cc sysdep/unix/krt.h index e0d60cbd4,1536e5025..9f7ebb4f4 --- a/sysdep/unix/krt.h +++ b/sysdep/unix/krt.h @@@ -21,15 -21,8 +21,10 @@@ struct kif_proto #define KRT_DEFAULT_ECMP_LIMIT 16 - #if 0 --#define EA_KRT_SOURCE EA_CODE(PROTOCOL_KERNEL, 0) --#define EA_KRT_METRIC EA_CODE(PROTOCOL_KERNEL, 1) - #endif - +extern struct ea_class ea_krt_source, ea_krt_metric; + +#define KRT_REF_SEEN 0x1 /* Seen in table */ +#define KRT_REF_BEST 0x2 /* Best in table */ /* Whenever we recognize our own routes, we allow learing of foreign routes */ @@@ -55,10 -48,11 +50,7 @@@ struct krt_proto struct proto p; struct krt_state sys; /* Sysdep state */ - #ifndef CONFIG_ALL_TABLES_AT_ONCE -#ifdef KRT_ALLOW_LEARN - struct rtable *krt_table; /* Internal table of inherited routes */ -#endif - timer *scan_timer; - #endif - struct bmap sync_map; /* Keeps track which exported routes were successfully written to kernel */ struct bmap seen_map; /* Routes seen during last periodic scan */ node krt_node; /* Node in krt_proto_list */ @@@ -80,8 -73,9 +72,9 @@@ extern pool *krt_pool struct proto_config * kif_init_config(int class); void kif_request_scan(void); + void krt_use_shared_scan(void); -void krt_got_route(struct krt_proto *p, struct rte *e); -void krt_got_route_async(struct krt_proto *p, struct rte *e, int new); +void krt_got_route(struct krt_proto *p, struct rte *e, s8 src); +void krt_got_route_async(struct krt_proto *p, struct rte *e, int new, s8 src); static inline int krt_get_sync_error(struct krt_proto *p, struct rte *e)