diff --git a/home/nipa/nipa_out/1002601/ynl/old-code/devlink-user.c b/home/nipa/nipa_out/1002601/ynl/new-code/devlink-user.c index 4b18bd218398..9f8436ab69d8 100644 --- a/home/nipa/nipa_out/1002601/ynl/old-code/devlink-user.c +++ b/home/nipa/nipa_out/1002601/ynl/new-code/devlink-user.c @@ -911,6 +911,8 @@ const struct ynl_policy_attr devlink_policy[DEVLINK_ATTR_MAX + 1] = { [DEVLINK_ATTR_REGION_DIRECT] = { .name = "region-direct", .type = YNL_PT_FLAG, }, [DEVLINK_ATTR_RATE_TC_BWS] = { .name = "rate-tc-bws", .type = YNL_PT_NEST, .nest = &devlink_dl_rate_tc_bws_nest, }, [DEVLINK_ATTR_HEALTH_REPORTER_BURST_PERIOD] = { .name = "health-reporter-burst-period", .type = YNL_PT_U64, }, + [DEVLINK_ATTR_CONF_SAVE] = { .name = "conf-save", .type = YNL_PT_FLAG, }, + [DEVLINK_ATTR_CONF_RESET] = { .name = "conf-reset", .type = YNL_PT_FLAG, }, }; const struct ynl_policy_nest devlink_nest = { @@ -7396,6 +7398,41 @@ int devlink_notify_filter_set(struct ynl_sock *ys, return 0; } +/* ============== DEVLINK_CMD_CONF_SET ============== */ +/* DEVLINK_CMD_CONF_SET - do */ +void devlink_conf_set_req_free(struct devlink_conf_set_req *req) +{ + free(req->bus_name); + free(req->dev_name); + free(req); +} + +int devlink_conf_set(struct ynl_sock *ys, struct devlink_conf_set_req *req) +{ + struct ynl_req_state yrs = { .yarg = { .ys = ys, }, }; + struct nlmsghdr *nlh; + int err; + + nlh = ynl_gemsg_start_req(ys, ys->family_id, DEVLINK_CMD_CONF_SET, 1); + ys->req_policy = &devlink_nest; + ys->req_hdr_len = ys->family->hdr_len; + + if (req->_len.bus_name) + ynl_attr_put_str(nlh, DEVLINK_ATTR_BUS_NAME, req->bus_name); + if (req->_len.dev_name) + ynl_attr_put_str(nlh, DEVLINK_ATTR_DEV_NAME, req->dev_name); + if (req->_present.conf_save) + ynl_attr_put(nlh, DEVLINK_ATTR_CONF_SAVE, NULL, 0); + if (req->_present.conf_reset) + ynl_attr_put(nlh, DEVLINK_ATTR_CONF_RESET, NULL, 0); + + err = ynl_exec(ys, nlh, &yrs); + if (err < 0) + return -1; + + return 0; +} + const struct ynl_family ynl_devlink_family = { .name = "devlink", .hdr_len = sizeof(struct genlmsghdr), diff --git a/home/nipa/nipa_out/1002601/ynl/old-code/devlink-user.h b/home/nipa/nipa_out/1002601/ynl/new-code/devlink-user.h index 8206ab5b1804..cf26750d76dd 100644 --- a/home/nipa/nipa_out/1002601/ynl/old-code/devlink-user.h +++ b/home/nipa/nipa_out/1002601/ynl/new-code/devlink-user.h @@ -5687,4 +5687,62 @@ devlink_notify_filter_set_req_set_port_index(struct devlink_notify_filter_set_re int devlink_notify_filter_set(struct ynl_sock *ys, struct devlink_notify_filter_set_req *req); +/* ============== DEVLINK_CMD_CONF_SET ============== */ +/* DEVLINK_CMD_CONF_SET - do */ +struct devlink_conf_set_req { + struct { + __u32 conf_save:1; + __u32 conf_reset:1; + } _present; + struct { + __u32 bus_name; + __u32 dev_name; + } _len; + + char *bus_name; + char *dev_name; +}; + +static inline struct devlink_conf_set_req *devlink_conf_set_req_alloc(void) +{ + return calloc(1, sizeof(struct devlink_conf_set_req)); +} +void devlink_conf_set_req_free(struct devlink_conf_set_req *req); + +static inline void +devlink_conf_set_req_set_bus_name(struct devlink_conf_set_req *req, + const char *bus_name) +{ + free(req->bus_name); + req->_len.bus_name = strlen(bus_name); + req->bus_name = malloc(req->_len.bus_name + 1); + memcpy(req->bus_name, bus_name, req->_len.bus_name); + req->bus_name[req->_len.bus_name] = 0; +} +static inline void +devlink_conf_set_req_set_dev_name(struct devlink_conf_set_req *req, + const char *dev_name) +{ + free(req->dev_name); + req->_len.dev_name = strlen(dev_name); + req->dev_name = malloc(req->_len.dev_name + 1); + memcpy(req->dev_name, dev_name, req->_len.dev_name); + req->dev_name[req->_len.dev_name] = 0; +} +static inline void +devlink_conf_set_req_set_conf_save(struct devlink_conf_set_req *req) +{ + req->_present.conf_save = 1; +} +static inline void +devlink_conf_set_req_set_conf_reset(struct devlink_conf_set_req *req) +{ + req->_present.conf_reset = 1; +} + +/* + * Manage device configuration. + */ +int devlink_conf_set(struct ynl_sock *ys, struct devlink_conf_set_req *req); + #endif /* _LINUX_DEVLINK_GEN_H */