diff --git a/tmp/ynl_build-tmp.UZlRUH/old-code/rt-link-user.c b/tmp/ynl_build-tmp.UZlRUH/new-code/rt-link-user.c index a2d08e830d78..07b15d1a0522 100644 --- a/tmp/ynl_build-tmp.UZlRUH/old-code/rt-link-user.c +++ b/tmp/ynl_build-tmp.UZlRUH/new-code/rt-link-user.c @@ -343,6 +343,19 @@ const char *rt_link_ovpn_mode_str(enum ovpn_mode value) return rt_link_ovpn_mode_strmap[value]; } +static const char * const rt_link_br_stp_mode_strmap[] = { + [0] = "auto", + [1] = "user", + [2] = "kernel", +}; + +const char *rt_link_br_stp_mode_str(enum br_stp_mode value) +{ + if (value < 0 || value >= (int)YNL_ARRAY_SIZE(rt_link_br_stp_mode_strmap)) + return NULL; + return rt_link_br_stp_mode_strmap[value]; +} + /* Policies */ const struct ynl_policy_attr rt_link_vf_ports_attrs_policy[IFLA_MAX + 1] = { }; @@ -490,6 +503,7 @@ const struct ynl_policy_attr rt_link_linkinfo_bridge_attrs_policy[IFLA_BR_MAX + [IFLA_BR_MCAST_QUERIER_STATE] = { .name = "mcast-querier-state", .type = YNL_PT_BINARY,}, [IFLA_BR_FDB_N_LEARNED] = { .name = "fdb-n-learned", .type = YNL_PT_U32, }, [IFLA_BR_FDB_MAX_LEARNED] = { .name = "fdb-max-learned", .type = YNL_PT_U32, }, + [IFLA_BR_STP_MODE] = { .name = "stp-mode", .type = YNL_PT_U32, }, }; const struct ynl_policy_nest rt_link_linkinfo_bridge_attrs_nest = { @@ -1653,6 +1667,8 @@ int rt_link_linkinfo_bridge_attrs_put(struct nlmsghdr *nlh, ynl_attr_put_u32(nlh, IFLA_BR_FDB_N_LEARNED, obj->fdb_n_learned); if (obj->_present.fdb_max_learned) ynl_attr_put_u32(nlh, IFLA_BR_FDB_MAX_LEARNED, obj->fdb_max_learned); + if (obj->_present.stp_mode) + ynl_attr_put_u32(nlh, IFLA_BR_STP_MODE, obj->stp_mode); ynl_attr_nest_end(nlh, nest); return 0; @@ -1935,6 +1951,11 @@ int rt_link_linkinfo_bridge_attrs_parse(struct ynl_parse_arg *yarg, return YNL_PARSE_CB_ERROR; dst->_present.fdb_max_learned = 1; dst->fdb_max_learned = ynl_attr_get_u32(attr); + } else if (type == IFLA_BR_STP_MODE) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.stp_mode = 1; + dst->stp_mode = ynl_attr_get_u32(attr); } } diff --git a/tmp/ynl_build-tmp.UZlRUH/old-code/rt-link-user.h b/tmp/ynl_build-tmp.UZlRUH/new-code/rt-link-user.h index 6f5afd185023..975e006da8f9 100644 --- a/tmp/ynl_build-tmp.UZlRUH/old-code/rt-link-user.h +++ b/tmp/ynl_build-tmp.UZlRUH/new-code/rt-link-user.h @@ -35,6 +35,7 @@ const char *rt_link_netkit_policy_str(int value); const char *rt_link_netkit_mode_str(enum netkit_mode value); const char *rt_link_netkit_scrub_str(int value); const char *rt_link_ovpn_mode_str(enum ovpn_mode value); +const char *rt_link_br_stp_mode_str(enum br_stp_mode value); /* Common nested types */ struct rt_link_vf_ports_attrs { @@ -182,6 +183,7 @@ struct rt_link_linkinfo_bridge_attrs { __u32 vlan_stats_per_port:1; __u32 fdb_n_learned:1; __u32 fdb_max_learned:1; + __u32 stp_mode:1; } _present; struct { __u32 root_id; @@ -240,6 +242,7 @@ struct rt_link_linkinfo_bridge_attrs { void *mcast_querier_state; __u32 fdb_n_learned; __u32 fdb_max_learned; + enum br_stp_mode stp_mode; }; struct rt_link_linkinfo_gre_attrs { @@ -2157,6 +2160,16 @@ rt_link_newlink_req_set_linkinfo_data_bridge_fdb_max_learned(struct rt_link_newl req->linkinfo.data.bridge.fdb_max_learned = fdb_max_learned; } static inline void +rt_link_newlink_req_set_linkinfo_data_bridge_stp_mode(struct rt_link_newlink_req *req, + enum br_stp_mode stp_mode) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.bridge = 1; + req->linkinfo.data.bridge._present.stp_mode = 1; + req->linkinfo.data.bridge.stp_mode = stp_mode; +} +static inline void rt_link_newlink_req_set_linkinfo_data_erspan_link(struct rt_link_newlink_req *req, __u32 link) { @@ -6217,6 +6230,16 @@ rt_link_getlink_req_dump_set_linkinfo_data_bridge_fdb_max_learned(struct rt_link req->linkinfo.data.bridge.fdb_max_learned = fdb_max_learned; } static inline void +rt_link_getlink_req_dump_set_linkinfo_data_bridge_stp_mode(struct rt_link_getlink_req_dump *req, + enum br_stp_mode stp_mode) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.bridge = 1; + req->linkinfo.data.bridge._present.stp_mode = 1; + req->linkinfo.data.bridge.stp_mode = stp_mode; +} +static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_link(struct rt_link_getlink_req_dump *req, __u32 link) { @@ -10062,6 +10085,16 @@ rt_link_setlink_req_set_linkinfo_data_bridge_fdb_max_learned(struct rt_link_setl req->linkinfo.data.bridge.fdb_max_learned = fdb_max_learned; } static inline void +rt_link_setlink_req_set_linkinfo_data_bridge_stp_mode(struct rt_link_setlink_req *req, + enum br_stp_mode stp_mode) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.bridge = 1; + req->linkinfo.data.bridge._present.stp_mode = 1; + req->linkinfo.data.bridge.stp_mode = stp_mode; +} +static inline void rt_link_setlink_req_set_linkinfo_data_erspan_link(struct rt_link_setlink_req *req, __u32 link) {