75 #include <amxc/amxc_macros.h>
76 #include <amxc/amxc.h>
78 #include <amxp/amxp.h>
79 #include <amxd/amxd_action.h>
80 #include <amxd/amxd_object.h>
129 const amxc_var_t*
const ret,
130 amxc_var_t*
const retval) {
133 const amxc_var_t*
const params =
134 amxc_var_get_key(ret,
"parameters", AMXC_VAR_FLAG_DEFAULT);
135 when_null_trace(params, exit, ERROR,
"Failed to extract 'parameters'");
137 const amxc_var_t*
const param_value =
138 amxc_var_get_key(params, param_name, AMXC_VAR_FLAG_DEFAULT);
139 when_null_trace(param_value, exit, ERROR,
"Failed to get value for '%s'", param_name);
141 const int rc = amxc_var_copy(retval, param_value);
142 when_failed_trace(rc, exit, ERROR,
"Failed to copy value for '%s'", param_name);
164 amxd_action_t reason,
165 const amxc_var_t*
const args,
166 amxc_var_t*
const retval,
169 amxd_status_t rv = amxd_status_unknown_error;
173 when_null_status(
object, exit, rv = amxd_status_invalid_function_argument);
174 when_null_status(param, exit, rv = amxd_status_invalid_function_argument);
175 when_null_status(retval, exit, rv = amxd_status_invalid_function_argument);
177 rv = amxd_action_param_read(
object, param, reason, args, retval, priv);
179 when_failed_trace(rv, exit, ERROR,
"amxd_action_param_read() failed");
192 const amxd_object_type_t type = amxd_object_get_type(
object);
193 when_true(amxd_object_template == type, exit);
195 const char*
const param_name = amxd_param_get_name(param);
196 when_null_trace(param_name, exit, ERROR,
"param_name is NULL");
198 char* path = amxd_object_get_path(
object, AMXD_OBJECT_INDEXED);
199 when_null_trace(path, exit, ERROR,
"path is NULL");
207 SAH_TRACEZ_ERROR(
ME,
"Failed to query %s.%s", path, param_name);
212 printf(
"tr181-xpon: read_trx_param():\n");
213 amxc_var_dump(&ret, STDOUT_FILENO);
225 amxc_var_clean(&ret);
242 UNUSED amxd_param_t*
const param,
243 amxd_action_t reason,
244 UNUSED
const amxc_var_t*
const args,
245 amxc_var_t*
const retval,
246 UNUSED
void* priv_unused) {
247 amxd_status_t rv = amxd_status_unknown_error;
249 uint32_t since_change = 0;
253 if(reason != action_param_read) {
254 SAH_TRACEZ_WARNING(
ME,
"wrong reason, expected action_param_read(%d) got %d",
255 action_param_read, reason);
256 rv = amxd_status_invalid_action;
260 when_null_trace(
object, skip, ERROR,
"object can not be NULL");
261 path = amxd_object_get_path(
object, AMXD_OBJECT_INDEXED);
267 when_null_trace(object->priv, skip, DEBUG,
"object %s has no private data", path);
270 when_true_trace(uptime < priv->last_change, skip, ERROR,
271 "uptime is smaller than LastChange");
276 when_failed_trace(amxc_var_set_uint32_t(retval, since_change),
277 exit, ERROR,
"Failed to set parameter LastChange");
303 amxd_action_t reason,
306 amxd_status_t rv = amxd_status_unknown_error;
309 if(reason != action_object_destroy) {
310 SAH_TRACEZ_WARNING(
ME,
"Wrong reason, expected action_object_destroy(%d) got %d",
311 action_object_destroy, reason);
312 rv = amxd_status_invalid_action;
316 when_null_trace(
object, exit, ERROR,
"object is NULL");
317 path = amxd_object_get_path(
object, AMXD_OBJECT_INDEXED);
318 when_null_trace(object->priv, exit, WARNING,
319 "object %s has no private data", path);
321 switch(private_data_type) {
352 UNUSED amxd_param_t* param,
353 amxd_action_t reason,
354 UNUSED
const amxc_var_t*
const args,
355 UNUSED amxc_var_t*
const retval,
356 UNUSED
void* priv_unused) {
373 UNUSED amxd_param_t* param,
374 amxd_action_t reason,
375 UNUSED
const amxc_var_t*
const args,
376 UNUSED amxc_var_t*
const retval,
377 UNUSED
void* priv_unused) {
395 UNUSED amxd_param_t* param,
396 amxd_action_t reason,
397 const amxc_var_t*
const args,
398 UNUSED amxc_var_t*
const retval,
400 amxd_status_t status = amxd_status_unknown_error;
401 const char* password = NULL;
403 amxc_string_t ani_path;
404 amxc_string_init(&ani_path, 0);
406 when_null_status(
object, exit, status = amxd_status_invalid_function_argument);
407 when_null_status(args, exit, status = amxd_status_invalid_function_argument);
409 when_true_status(reason != action_param_validate, exit,
410 status = amxd_status_function_not_implemented);
412 password = amxc_var_constcast(cstring_t, args);
413 when_null_trace(password, exit, ERROR,
"password is NULL");
415 if(strlen(password) != 0) {
417 path = amxd_object_get_path(
object, AMXD_OBJECT_INDEXED);
418 when_null_trace(path, exit, ERROR,
"path is NULL");
420 SAH_TRACEZ_ERROR(
ME,
"%s: failed to check password", path);
426 const char*
const ani_path_cstr = amxc_string_get(&ani_path, 0);
428 status = amxd_status_invalid_value;
433 status = amxd_status_ok;
439 amxc_string_clean(&ani_path);
bool ani_strip_tc_authentication(const char *const ani_auth_path, amxc_string_t *const ani_path)
static bool process_param_value(const char *const param_name, const amxc_var_t *const ret, amxc_var_t *const retval)
amxd_status_t _check_password(amxd_object_t *object, UNUSED amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, UNUSED amxc_var_t *const retval, UNUSED void *priv)
amxd_status_t _lastchange_on_read(amxd_object_t *const object, UNUSED amxd_param_t *const param, amxd_action_t reason, UNUSED const amxc_var_t *const args, amxc_var_t *const retval, UNUSED void *priv_unused)
amxd_status_t _read_trx_param(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
amxd_status_t object_destroyed_common(amxd_object_t *object, amxd_action_t reason, private_data_type_t private_data_type)
enum _private_data_type private_data_type_t
static bool s_ignore_param_reads
void dm_actions_set_ignore_param_reads(bool ignore)
@ private_data_for_object_interface
amxd_status_t _onu_destroyed(amxd_object_t *object, UNUSED amxd_param_t *param, amxd_action_t reason, UNUSED const amxc_var_t *const args, UNUSED amxc_var_t *const retval, UNUSED void *priv_unused)
amxd_status_t _interface_object_destroyed(amxd_object_t *object, UNUSED amxd_param_t *param, amxd_action_t reason, UNUSED const amxc_var_t *const args, UNUSED amxc_var_t *const retval, UNUSED void *priv_unused)
void oipriv_delete_private_data(object_intf_priv_t *priv)
void onu_priv_delete_private_data(onu_priv_t *priv)
bool passwd_check_password(const char *const ani_auth_path, const char *const password)
int pon_ctrl_get_param_values(const char *const path, const char *const names, amxc_var_t *ret)
uint32_t time_get_system_uptime(void)
#define SAH_TRACEZ_DEBUG(zone, format,...)
#define SAH_TRACEZ_DEBUG2(zone, format,...)