diff --git a/doc/bird.sgml b/doc/bird.sgml index 4500c6af..410e8545 100644 --- a/doc/bird.sgml +++ b/doc/bird.sgml @@ -3989,7 +3989,9 @@ string, others have type int. Supported attributes are: Example diff --git a/sysdep/linux/netlink.Y b/sysdep/linux/netlink.Y index 7dece46b..8e1c1921 100644 --- a/sysdep/linux/netlink.Y +++ b/sysdep/linux/netlink.Y @@ -10,13 +10,17 @@ CF_HDR CF_DECLS -CF_KEYWORDS(KERNEL, TABLE, METRIC, NETLINK, RX, BUFFER, - KRT_LOCK_MTU, KRT_LOCK_WINDOW, KRT_LOCK_RTT, KRT_LOCK_RTTVAR, +CF_KEYWORDS(KERNEL, TABLE, METRIC, NETLINK, RX, BUFFER) + +CF_KEYWORDS(KRT_LOCK_MTU, KRT_LOCK_WINDOW, KRT_LOCK_RTT, KRT_LOCK_RTTVAR, KRT_LOCK_SSTRESH, KRT_LOCK_CWND, KRT_LOCK_ADVMSS, KRT_LOCK_REORDERING, - KRT_LOCK_HOPLIMIT, KRT_LOCK_RTO_MIN, KRT_FEATURE_ECN, KRT_FEATURE_ALLFRAG) + KRT_LOCK_HOPLIMIT, KRT_LOCK_INITCWND, KRT_LOCK_RTO_MIN, KRT_LOCK_INITRWND, + KRT_LOCK_QUICKACK, KRT_LOCK_CONGCTL, KRT_LOCK_FASTOPEN_NO_COOKIE, + KRT_FEATURE_ECN, KRT_FEATURE_ALLFRAG) %type attr_bit + CF_GRAMMAR kern_proto: kern_proto kern_sys_item ';' ; @@ -28,17 +32,22 @@ kern_sys_item: ; /* Bits of EA_KRT_LOCK, based on RTAX_* constants */ - -attr_bit: KRT_LOCK_MTU { $$ = f_new_dynamic_attr_bit(2, "krt_lock"); } ; +attr_bit: KRT_LOCK_MTU { $$ = f_new_dynamic_attr_bit(2, "krt_lock"); } ; attr_bit: KRT_LOCK_WINDOW { $$ = f_new_dynamic_attr_bit(3, "krt_lock"); } ; -attr_bit: KRT_LOCK_RTT { $$ = f_new_dynamic_attr_bit(4, "krt_lock"); } ; +attr_bit: KRT_LOCK_RTT { $$ = f_new_dynamic_attr_bit(4, "krt_lock"); } ; attr_bit: KRT_LOCK_RTTVAR { $$ = f_new_dynamic_attr_bit(5, "krt_lock"); } ; attr_bit: KRT_LOCK_SSTRESH { $$ = f_new_dynamic_attr_bit(6, "krt_lock"); } ; -attr_bit: KRT_LOCK_CWND { $$ = f_new_dynamic_attr_bit(7, "krt_lock"); } ; +attr_bit: KRT_LOCK_CWND { $$ = f_new_dynamic_attr_bit(7, "krt_lock"); } ; attr_bit: KRT_LOCK_ADVMSS { $$ = f_new_dynamic_attr_bit(8, "krt_lock"); } ; -attr_bit: KRT_LOCK_REORDERING { $$ = f_new_dynamic_attr_bit(9, "krt_lock"); } ; -attr_bit: KRT_LOCK_HOPLIMIT { $$ = f_new_dynamic_attr_bit(10, "krt_lock"); } ; -attr_bit: KRT_LOCK_RTO_MIN { $$ = f_new_dynamic_attr_bit(13, "krt_lock"); } ; +attr_bit: KRT_LOCK_REORDERING { $$ = f_new_dynamic_attr_bit(9, "krt_lock"); } ; +attr_bit: KRT_LOCK_HOPLIMIT { $$ = f_new_dynamic_attr_bit(10, "krt_lock"); } ; +attr_bit: KRT_LOCK_INITCWND { $$ = f_new_dynamic_attr_bit(11, "krt_lock"); } ; +/* No lock for FEATURES bitfield */ +attr_bit: KRT_LOCK_RTO_MIN { $$ = f_new_dynamic_attr_bit(13, "krt_lock"); } ; +attr_bit: KRT_LOCK_INITRWND { $$ = f_new_dynamic_attr_bit(14, "krt_lock"); } ; +attr_bit: KRT_LOCK_QUICKACK { $$ = f_new_dynamic_attr_bit(15, "krt_lock"); } ; +attr_bit: KRT_LOCK_CONGCTL { $$ = f_new_dynamic_attr_bit(16, "krt_lock"); } ; +attr_bit: KRT_LOCK_FASTOPEN_NO_COOKIE { $$ = f_new_dynamic_attr_bit(17, "krt_lock"); } ; /* Bits of EA_KRT_FEATURES */ attr_bit: KRT_FEATURE_ECN { $$ = f_new_dynamic_attr_bit(0, "krt_features"); } ; diff --git a/sysdep/linux/netlink.c b/sysdep/linux/netlink.c index 06a6ea72..9eae5a48 100644 --- a/sysdep/linux/netlink.c +++ b/sysdep/linux/netlink.c @@ -95,13 +95,14 @@ static struct ea_class ea_krt_metrics[] = { KRT_METRIC_INT(RTAX_RTO_MIN, "krt_rto_min"), KRT_METRIC_INT(RTAX_INITRWND, "krt_initrwnd"), KRT_METRIC_INT(RTAX_QUICKACK, "krt_quickack"), + KRT_METRIC_INT(RTAX_FASTOPEN_NO_COOKIE, "krt_fastopen_no_cookie"), #undef KRT_METRIC_INT }; static const char *krt_metrics_names[KRT_METRICS_MAX] = { NULL, "lock", "mtu", "window", "rtt", "rttvar", "sstresh", "cwnd", "advmss", "reordering", "hoplimit", "initcwnd", "features", "rto_min", "initrwnd", "quickack", - "congctl" + "congctl", "fastopen_no_cookie" }; static const char *krt_features_names[KRT_FEATURES_MAX] = {