diff --git a/home/nipa/nipa_out/990550/ynl/old-code/rt-link-user.c b/home/nipa/nipa_out/990550/ynl/new-code/rt-link-user.c index 182bfcc45e4d..7701cf338b24 100644 --- a/home/nipa/nipa_out/990550/ynl/old-code/rt-link-user.c +++ b/home/nipa/nipa_out/990550/ynl/new-code/rt-link-user.c @@ -573,6 +573,8 @@ const struct ynl_policy_attr rt_link_linkinfo_geneve_attrs_policy[IFLA_GENEVE_MA [IFLA_GENEVE_DF] = { .name = "df", .type = YNL_PT_U8, }, [IFLA_GENEVE_INNER_PROTO_INHERIT] = { .name = "inner-proto-inherit", .type = YNL_PT_FLAG, }, [IFLA_GENEVE_PORT_RANGE] = { .name = "port-range", .type = YNL_PT_BINARY,}, + [IFLA_GENEVE_LOCAL] = { .name = "local", .type = YNL_PT_BINARY,}, + [IFLA_GENEVE_LOCAL6] = { .name = "local6", .type = YNL_PT_BINARY,}, }; const struct ynl_policy_nest rt_link_linkinfo_geneve_attrs_nest = { @@ -2348,6 +2350,8 @@ rt_link_linkinfo_geneve_attrs_free(struct rt_link_linkinfo_geneve_attrs *obj) free(obj->remote); free(obj->remote6); free(obj->port_range); + free(obj->local); + free(obj->local6); } int rt_link_linkinfo_geneve_attrs_put(struct nlmsghdr *nlh, @@ -2387,6 +2391,10 @@ int rt_link_linkinfo_geneve_attrs_put(struct nlmsghdr *nlh, ynl_attr_put(nlh, IFLA_GENEVE_INNER_PROTO_INHERIT, NULL, 0); if (obj->_len.port_range) ynl_attr_put(nlh, IFLA_GENEVE_PORT_RANGE, obj->port_range, obj->_len.port_range); + if (obj->_len.local) + ynl_attr_put(nlh, IFLA_GENEVE_LOCAL, obj->local, obj->_len.local); + if (obj->_len.local6) + ynl_attr_put(nlh, IFLA_GENEVE_LOCAL6, obj->local6, obj->_len.local6); ynl_attr_nest_end(nlh, nest); return 0; @@ -2492,6 +2500,26 @@ int rt_link_linkinfo_geneve_attrs_parse(struct ynl_parse_arg *yarg, else dst->port_range = malloc(len); memcpy(dst->port_range, ynl_attr_data(attr), len); + } else if (type == IFLA_GENEVE_LOCAL) { + unsigned int len; + + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + + len = ynl_attr_data_len(attr); + dst->_len.local = len; + dst->local = malloc(len); + memcpy(dst->local, ynl_attr_data(attr), len); + } else if (type == IFLA_GENEVE_LOCAL6) { + unsigned int len; + + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + + len = ynl_attr_data_len(attr); + dst->_len.local6 = len; + dst->local6 = malloc(len); + memcpy(dst->local6, ynl_attr_data(attr), len); } } diff --git a/home/nipa/nipa_out/990550/ynl/old-code/rt-link-user.h b/home/nipa/nipa_out/990550/ynl/new-code/rt-link-user.h index 989c5af52b0a..547d1aef4841 100644 --- a/home/nipa/nipa_out/990550/ynl/old-code/rt-link-user.h +++ b/home/nipa/nipa_out/990550/ynl/new-code/rt-link-user.h @@ -364,6 +364,8 @@ struct rt_link_linkinfo_geneve_attrs { __u32 remote; __u32 remote6; __u32 port_range; + __u32 local; + __u32 local6; } _len; __u32 id; @@ -379,6 +381,8 @@ struct rt_link_linkinfo_geneve_attrs { __u8 ttl_inherit; __u8 df; struct ifla_geneve_port_range *port_range; + void *local; + void *local6; }; struct rt_link_linkinfo_iptun_attrs { @@ -3229,6 +3233,32 @@ 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_geneve_local(struct rt_link_newlink_req *req, + const void *local, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.geneve = 1; + free(req->linkinfo.data.geneve.local); + req->linkinfo.data.geneve._len.local = len; + req->linkinfo.data.geneve.local = malloc(req->linkinfo.data.geneve._len.local); + memcpy(req->linkinfo.data.geneve.local, local, req->linkinfo.data.geneve._len.local); +} +static inline void +rt_link_newlink_req_set_linkinfo_data_geneve_local6(struct rt_link_newlink_req *req, + const void *local6, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.geneve = 1; + free(req->linkinfo.data.geneve.local6); + req->linkinfo.data.geneve._len.local6 = len; + req->linkinfo.data.geneve.local6 = malloc(req->linkinfo.data.geneve._len.local6); + memcpy(req->linkinfo.data.geneve.local6, local6, req->linkinfo.data.geneve._len.local6); +} +static inline void rt_link_newlink_req_set_linkinfo_data_ipip_link(struct rt_link_newlink_req *req, __u32 link) { @@ -7208,6 +7238,32 @@ 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_geneve_local(struct rt_link_getlink_req_dump *req, + const void *local, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.geneve = 1; + free(req->linkinfo.data.geneve.local); + req->linkinfo.data.geneve._len.local = len; + req->linkinfo.data.geneve.local = malloc(req->linkinfo.data.geneve._len.local); + memcpy(req->linkinfo.data.geneve.local, local, req->linkinfo.data.geneve._len.local); +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_geneve_local6(struct rt_link_getlink_req_dump *req, + const void *local6, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.geneve = 1; + free(req->linkinfo.data.geneve.local6); + req->linkinfo.data.geneve._len.local6 = len; + req->linkinfo.data.geneve.local6 = malloc(req->linkinfo.data.geneve._len.local6); + memcpy(req->linkinfo.data.geneve.local6, local6, req->linkinfo.data.geneve._len.local6); +} +static inline void rt_link_getlink_req_dump_set_linkinfo_data_ipip_link(struct rt_link_getlink_req_dump *req, __u32 link) { @@ -10970,6 +11026,32 @@ 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_geneve_local(struct rt_link_setlink_req *req, + const void *local, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.geneve = 1; + free(req->linkinfo.data.geneve.local); + req->linkinfo.data.geneve._len.local = len; + req->linkinfo.data.geneve.local = malloc(req->linkinfo.data.geneve._len.local); + memcpy(req->linkinfo.data.geneve.local, local, req->linkinfo.data.geneve._len.local); +} +static inline void +rt_link_setlink_req_set_linkinfo_data_geneve_local6(struct rt_link_setlink_req *req, + const void *local6, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.geneve = 1; + free(req->linkinfo.data.geneve.local6); + req->linkinfo.data.geneve._len.local6 = len; + req->linkinfo.data.geneve.local6 = malloc(req->linkinfo.data.geneve._len.local6); + memcpy(req->linkinfo.data.geneve.local6, local6, req->linkinfo.data.geneve._len.local6); +} +static inline void rt_link_setlink_req_set_linkinfo_data_ipip_link(struct rt_link_setlink_req *req, __u32 link) {