diff --git a/home/nipa/nipa_out/1022613/ynl/old-code/rt-link-user.c b/home/nipa/nipa_out/1022613/ynl/new-code/rt-link-user.c index c27bada1ed36..60ad4cbab207 100644 --- a/home/nipa/nipa_out/1022613/ynl/old-code/rt-link-user.c +++ b/home/nipa/nipa_out/1022613/ynl/new-code/rt-link-user.c @@ -580,6 +580,22 @@ const struct ynl_policy_nest rt_link_linkinfo_geneve_attrs_nest = { .table = rt_link_linkinfo_geneve_attrs_policy, }; +const struct ynl_policy_attr rt_link_linkinfo_hsr_attrs_policy[IFLA_HSR_MAX + 1] = { + [IFLA_HSR_SLAVE1] = { .name = "slave1", .type = YNL_PT_U32, }, + [IFLA_HSR_SLAVE2] = { .name = "slave2", .type = YNL_PT_U32, }, + [IFLA_HSR_MULTICAST_SPEC] = { .name = "multicast-spec", .type = YNL_PT_U8, }, + [IFLA_HSR_SUPERVISION_ADDR] = { .name = "supervision-addr", .type = YNL_PT_BINARY,}, + [IFLA_HSR_SEQ_NR] = { .name = "seq-nr", .type = YNL_PT_U16, }, + [IFLA_HSR_VERSION] = { .name = "version", .type = YNL_PT_U8, }, + [IFLA_HSR_PROTOCOL] = { .name = "protocol", .type = YNL_PT_U8, }, + [IFLA_HSR_INTERLINK] = { .name = "interlink", .type = YNL_PT_U32, }, +}; + +const struct ynl_policy_nest rt_link_linkinfo_hsr_attrs_nest = { + .max_attr = IFLA_HSR_MAX, + .table = rt_link_linkinfo_hsr_attrs_policy, +}; + const struct ynl_policy_attr rt_link_linkinfo_iptun_attrs_policy[IFLA_IPTUN_MAX + 1] = { [IFLA_IPTUN_LINK] = { .name = "link", .type = YNL_PT_U32, }, [IFLA_IPTUN_LOCAL] = { .name = "local", .type = YNL_PT_BINARY,}, @@ -950,20 +966,21 @@ const struct ynl_policy_attr rt_link_linkinfo_data_msg_policy[] = { [4] = { .type = YNL_PT_SUBMSG, .name = "gretap", .nest = &rt_link_linkinfo_gre_attrs_nest, }, [5] = { .type = YNL_PT_SUBMSG, .name = "ip6gre", .nest = &rt_link_linkinfo_gre6_attrs_nest, }, [6] = { .type = YNL_PT_SUBMSG, .name = "geneve", .nest = &rt_link_linkinfo_geneve_attrs_nest, }, - [7] = { .type = YNL_PT_SUBMSG, .name = "ipip", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, - [8] = { .type = YNL_PT_SUBMSG, .name = "ip6tnl", .nest = &rt_link_linkinfo_ip6tnl_attrs_nest, }, - [9] = { .type = YNL_PT_SUBMSG, .name = "sit", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, - [10] = { .type = YNL_PT_SUBMSG, .name = "tun", .nest = &rt_link_linkinfo_tun_attrs_nest, }, - [11] = { .type = YNL_PT_SUBMSG, .name = "vlan", .nest = &rt_link_linkinfo_vlan_attrs_nest, }, - [12] = { .type = YNL_PT_SUBMSG, .name = "vrf", .nest = &rt_link_linkinfo_vrf_attrs_nest, }, - [13] = { .type = YNL_PT_SUBMSG, .name = "vti", .nest = &rt_link_linkinfo_vti_attrs_nest, }, - [14] = { .type = YNL_PT_SUBMSG, .name = "vti6", .nest = &rt_link_linkinfo_vti6_attrs_nest, }, - [15] = { .type = YNL_PT_SUBMSG, .name = "netkit", .nest = &rt_link_linkinfo_netkit_attrs_nest, }, - [16] = { .type = YNL_PT_SUBMSG, .name = "ovpn", .nest = &rt_link_linkinfo_ovpn_attrs_nest, }, + [7] = { .type = YNL_PT_SUBMSG, .name = "hsr", .nest = &rt_link_linkinfo_hsr_attrs_nest, }, + [8] = { .type = YNL_PT_SUBMSG, .name = "ipip", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, + [9] = { .type = YNL_PT_SUBMSG, .name = "ip6tnl", .nest = &rt_link_linkinfo_ip6tnl_attrs_nest, }, + [10] = { .type = YNL_PT_SUBMSG, .name = "sit", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, + [11] = { .type = YNL_PT_SUBMSG, .name = "tun", .nest = &rt_link_linkinfo_tun_attrs_nest, }, + [12] = { .type = YNL_PT_SUBMSG, .name = "vlan", .nest = &rt_link_linkinfo_vlan_attrs_nest, }, + [13] = { .type = YNL_PT_SUBMSG, .name = "vrf", .nest = &rt_link_linkinfo_vrf_attrs_nest, }, + [14] = { .type = YNL_PT_SUBMSG, .name = "vti", .nest = &rt_link_linkinfo_vti_attrs_nest, }, + [15] = { .type = YNL_PT_SUBMSG, .name = "vti6", .nest = &rt_link_linkinfo_vti6_attrs_nest, }, + [16] = { .type = YNL_PT_SUBMSG, .name = "netkit", .nest = &rt_link_linkinfo_netkit_attrs_nest, }, + [17] = { .type = YNL_PT_SUBMSG, .name = "ovpn", .nest = &rt_link_linkinfo_ovpn_attrs_nest, }, }; const struct ynl_policy_nest rt_link_linkinfo_data_msg_nest = { - .max_attr = 16, + .max_attr = 17, .table = rt_link_linkinfo_data_msg_policy, }; @@ -2466,6 +2483,98 @@ int rt_link_linkinfo_geneve_attrs_parse(struct ynl_parse_arg *yarg, return 0; } +void rt_link_linkinfo_hsr_attrs_free(struct rt_link_linkinfo_hsr_attrs *obj) +{ + free(obj->supervision_addr); +} + +int rt_link_linkinfo_hsr_attrs_put(struct nlmsghdr *nlh, + unsigned int attr_type, + struct rt_link_linkinfo_hsr_attrs *obj) +{ + struct nlattr *nest; + + nest = ynl_attr_nest_start(nlh, attr_type); + if (obj->_present.slave1) + ynl_attr_put_u32(nlh, IFLA_HSR_SLAVE1, obj->slave1); + if (obj->_present.slave2) + ynl_attr_put_u32(nlh, IFLA_HSR_SLAVE2, obj->slave2); + if (obj->_present.multicast_spec) + ynl_attr_put_u8(nlh, IFLA_HSR_MULTICAST_SPEC, obj->multicast_spec); + if (obj->_len.supervision_addr) + ynl_attr_put(nlh, IFLA_HSR_SUPERVISION_ADDR, obj->supervision_addr, obj->_len.supervision_addr); + if (obj->_present.seq_nr) + ynl_attr_put_u16(nlh, IFLA_HSR_SEQ_NR, obj->seq_nr); + if (obj->_present.version) + ynl_attr_put_u8(nlh, IFLA_HSR_VERSION, obj->version); + if (obj->_present.protocol) + ynl_attr_put_u8(nlh, IFLA_HSR_PROTOCOL, obj->protocol); + if (obj->_present.interlink) + ynl_attr_put_u32(nlh, IFLA_HSR_INTERLINK, obj->interlink); + ynl_attr_nest_end(nlh, nest); + + return 0; +} + +int rt_link_linkinfo_hsr_attrs_parse(struct ynl_parse_arg *yarg, + const struct nlattr *nested) +{ + struct rt_link_linkinfo_hsr_attrs *dst = yarg->data; + const struct nlattr *attr; + unsigned int len; + + ynl_attr_for_each_nested(attr, nested) { + unsigned int type = ynl_attr_type(attr); + + if (type == IFLA_HSR_SLAVE1) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.slave1 = 1; + dst->slave1 = ynl_attr_get_u32(attr); + } else if (type == IFLA_HSR_SLAVE2) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.slave2 = 1; + dst->slave2 = ynl_attr_get_u32(attr); + } else if (type == IFLA_HSR_MULTICAST_SPEC) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.multicast_spec = 1; + dst->multicast_spec = ynl_attr_get_u8(attr); + } else if (type == IFLA_HSR_SUPERVISION_ADDR) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + + len = ynl_attr_data_len(attr); + dst->_len.supervision_addr = len; + dst->supervision_addr = malloc(len); + memcpy(dst->supervision_addr, ynl_attr_data(attr), len); + } else if (type == IFLA_HSR_SEQ_NR) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.seq_nr = 1; + dst->seq_nr = ynl_attr_get_u16(attr); + } else if (type == IFLA_HSR_VERSION) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.version = 1; + dst->version = ynl_attr_get_u8(attr); + } else if (type == IFLA_HSR_PROTOCOL) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.protocol = 1; + dst->protocol = ynl_attr_get_u8(attr); + } else if (type == IFLA_HSR_INTERLINK) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.interlink = 1; + dst->interlink = ynl_attr_get_u32(attr); + } + } + + return 0; +} + void rt_link_linkinfo_iptun_attrs_free(struct rt_link_linkinfo_iptun_attrs *obj) { @@ -4784,6 +4893,7 @@ void rt_link_linkinfo_data_msg_free(struct rt_link_linkinfo_data_msg *obj) rt_link_linkinfo_gre_attrs_free(&obj->gretap); rt_link_linkinfo_gre6_attrs_free(&obj->ip6gre); rt_link_linkinfo_geneve_attrs_free(&obj->geneve); + rt_link_linkinfo_hsr_attrs_free(&obj->hsr); rt_link_linkinfo_iptun_attrs_free(&obj->ipip); rt_link_linkinfo_ip6tnl_attrs_free(&obj->ip6tnl); rt_link_linkinfo_iptun_attrs_free(&obj->sit); @@ -4813,6 +4923,8 @@ int rt_link_linkinfo_data_msg_put(struct nlmsghdr *nlh, unsigned int attr_type, rt_link_linkinfo_gre6_attrs_put(nlh, IFLA_INFO_DATA, &obj->ip6gre); if (obj->_present.geneve) rt_link_linkinfo_geneve_attrs_put(nlh, IFLA_INFO_DATA, &obj->geneve); + if (obj->_present.hsr) + rt_link_linkinfo_hsr_attrs_put(nlh, IFLA_INFO_DATA, &obj->hsr); if (obj->_present.ipip) rt_link_linkinfo_iptun_attrs_put(nlh, IFLA_INFO_DATA, &obj->ipip); if (obj->_present.ip6tnl) @@ -4889,6 +5001,12 @@ int rt_link_linkinfo_data_msg_parse(struct ynl_parse_arg *yarg, if (rt_link_linkinfo_geneve_attrs_parse(&parg, attr)) return YNL_PARSE_CB_ERROR; dst->_present.geneve = 1; + } else if (!strcmp(sel, "hsr")) { + parg.rsp_policy = &rt_link_linkinfo_hsr_attrs_nest; + parg.data = &dst->hsr; + if (rt_link_linkinfo_hsr_attrs_parse(&parg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.hsr = 1; } else if (!strcmp(sel, "ipip")) { parg.rsp_policy = &rt_link_linkinfo_iptun_attrs_nest; parg.data = &dst->ipip; diff --git a/home/nipa/nipa_out/1022613/ynl/old-code/rt-link-user.h b/home/nipa/nipa_out/1022613/ynl/new-code/rt-link-user.h index 989c5af52b0a..1c96bc847a76 100644 --- a/home/nipa/nipa_out/1022613/ynl/old-code/rt-link-user.h +++ b/home/nipa/nipa_out/1022613/ynl/new-code/rt-link-user.h @@ -381,6 +381,30 @@ struct rt_link_linkinfo_geneve_attrs { struct ifla_geneve_port_range *port_range; }; +struct rt_link_linkinfo_hsr_attrs { + struct { + __u32 slave1:1; + __u32 slave2:1; + __u32 multicast_spec:1; + __u32 seq_nr:1; + __u32 version:1; + __u32 protocol:1; + __u32 interlink:1; + } _present; + struct { + __u32 supervision_addr; + } _len; + + __u32 slave1; + __u32 slave2; + __u8 multicast_spec; + void *supervision_addr; + __u16 seq_nr; + __u8 version; + __u8 protocol; + __u32 interlink; +}; + struct rt_link_linkinfo_iptun_attrs { struct { __u32 link:1; @@ -1088,6 +1112,7 @@ struct rt_link_linkinfo_data_msg { __u32 gretap:1; __u32 ip6gre:1; __u32 geneve:1; + __u32 hsr:1; __u32 ipip:1; __u32 ip6tnl:1; __u32 sit:1; @@ -1107,6 +1132,7 @@ struct rt_link_linkinfo_data_msg { struct rt_link_linkinfo_gre_attrs gretap; struct rt_link_linkinfo_gre6_attrs ip6gre; struct rt_link_linkinfo_geneve_attrs geneve; + struct rt_link_linkinfo_hsr_attrs hsr; struct rt_link_linkinfo_iptun_attrs ipip; struct rt_link_linkinfo_ip6tnl_attrs ip6tnl; struct rt_link_linkinfo_iptun_attrs sit; @@ -3229,6 +3255,89 @@ rt_link_newlink_req_set_linkinfo_data_geneve_port_range(struct rt_link_newlink_r memcpy(req->linkinfo.data.geneve.port_range, port_range, req->linkinfo.data.geneve._len.port_range); } static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_slave1(struct rt_link_newlink_req *req, + __u32 slave1) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.slave1 = 1; + req->linkinfo.data.hsr.slave1 = slave1; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_slave2(struct rt_link_newlink_req *req, + __u32 slave2) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.slave2 = 1; + req->linkinfo.data.hsr.slave2 = slave2; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_multicast_spec(struct rt_link_newlink_req *req, + __u8 multicast_spec) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.multicast_spec = 1; + req->linkinfo.data.hsr.multicast_spec = multicast_spec; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_supervision_addr(struct rt_link_newlink_req *req, + const void *supervision_addr, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + free(req->linkinfo.data.hsr.supervision_addr); + req->linkinfo.data.hsr._len.supervision_addr = len; + req->linkinfo.data.hsr.supervision_addr = malloc(req->linkinfo.data.hsr._len.supervision_addr); + memcpy(req->linkinfo.data.hsr.supervision_addr, supervision_addr, req->linkinfo.data.hsr._len.supervision_addr); +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_seq_nr(struct rt_link_newlink_req *req, + __u16 seq_nr) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.seq_nr = 1; + req->linkinfo.data.hsr.seq_nr = seq_nr; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_version(struct rt_link_newlink_req *req, + __u8 version) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.version = 1; + req->linkinfo.data.hsr.version = version; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_protocol(struct rt_link_newlink_req *req, + __u8 protocol) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.protocol = 1; + req->linkinfo.data.hsr.protocol = protocol; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_hsr_interlink(struct rt_link_newlink_req *req, + __u32 interlink) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.interlink = 1; + req->linkinfo.data.hsr.interlink = interlink; +} +static inline void rt_link_newlink_req_set_linkinfo_data_ipip_link(struct rt_link_newlink_req *req, __u32 link) { @@ -7208,6 +7317,89 @@ rt_link_getlink_req_dump_set_linkinfo_data_geneve_port_range(struct rt_link_getl memcpy(req->linkinfo.data.geneve.port_range, port_range, req->linkinfo.data.geneve._len.port_range); } static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_slave1(struct rt_link_getlink_req_dump *req, + __u32 slave1) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.slave1 = 1; + req->linkinfo.data.hsr.slave1 = slave1; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_slave2(struct rt_link_getlink_req_dump *req, + __u32 slave2) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.slave2 = 1; + req->linkinfo.data.hsr.slave2 = slave2; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_multicast_spec(struct rt_link_getlink_req_dump *req, + __u8 multicast_spec) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.multicast_spec = 1; + req->linkinfo.data.hsr.multicast_spec = multicast_spec; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_supervision_addr(struct rt_link_getlink_req_dump *req, + const void *supervision_addr, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + free(req->linkinfo.data.hsr.supervision_addr); + req->linkinfo.data.hsr._len.supervision_addr = len; + req->linkinfo.data.hsr.supervision_addr = malloc(req->linkinfo.data.hsr._len.supervision_addr); + memcpy(req->linkinfo.data.hsr.supervision_addr, supervision_addr, req->linkinfo.data.hsr._len.supervision_addr); +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_seq_nr(struct rt_link_getlink_req_dump *req, + __u16 seq_nr) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.seq_nr = 1; + req->linkinfo.data.hsr.seq_nr = seq_nr; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_version(struct rt_link_getlink_req_dump *req, + __u8 version) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.version = 1; + req->linkinfo.data.hsr.version = version; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_protocol(struct rt_link_getlink_req_dump *req, + __u8 protocol) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.protocol = 1; + req->linkinfo.data.hsr.protocol = protocol; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_hsr_interlink(struct rt_link_getlink_req_dump *req, + __u32 interlink) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.interlink = 1; + req->linkinfo.data.hsr.interlink = interlink; +} +static inline void rt_link_getlink_req_dump_set_linkinfo_data_ipip_link(struct rt_link_getlink_req_dump *req, __u32 link) { @@ -10970,6 +11162,89 @@ rt_link_setlink_req_set_linkinfo_data_geneve_port_range(struct rt_link_setlink_r memcpy(req->linkinfo.data.geneve.port_range, port_range, req->linkinfo.data.geneve._len.port_range); } static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_slave1(struct rt_link_setlink_req *req, + __u32 slave1) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.slave1 = 1; + req->linkinfo.data.hsr.slave1 = slave1; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_slave2(struct rt_link_setlink_req *req, + __u32 slave2) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.slave2 = 1; + req->linkinfo.data.hsr.slave2 = slave2; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_multicast_spec(struct rt_link_setlink_req *req, + __u8 multicast_spec) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.multicast_spec = 1; + req->linkinfo.data.hsr.multicast_spec = multicast_spec; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_supervision_addr(struct rt_link_setlink_req *req, + const void *supervision_addr, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + free(req->linkinfo.data.hsr.supervision_addr); + req->linkinfo.data.hsr._len.supervision_addr = len; + req->linkinfo.data.hsr.supervision_addr = malloc(req->linkinfo.data.hsr._len.supervision_addr); + memcpy(req->linkinfo.data.hsr.supervision_addr, supervision_addr, req->linkinfo.data.hsr._len.supervision_addr); +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_seq_nr(struct rt_link_setlink_req *req, + __u16 seq_nr) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.seq_nr = 1; + req->linkinfo.data.hsr.seq_nr = seq_nr; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_version(struct rt_link_setlink_req *req, + __u8 version) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.version = 1; + req->linkinfo.data.hsr.version = version; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_protocol(struct rt_link_setlink_req *req, + __u8 protocol) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.protocol = 1; + req->linkinfo.data.hsr.protocol = protocol; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_hsr_interlink(struct rt_link_setlink_req *req, + __u32 interlink) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.hsr = 1; + req->linkinfo.data.hsr._present.interlink = 1; + req->linkinfo.data.hsr.interlink = interlink; +} +static inline void rt_link_setlink_req_set_linkinfo_data_ipip_link(struct rt_link_setlink_req *req, __u32 link) {