mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
B#14347: usp events not working for multi-instance objects
This commit is contained in:
parent
d988764f9d
commit
eee1130299
8 changed files with 182 additions and 60 deletions
|
|
@ -45,8 +45,14 @@ static void bbfdm_event_handler(struct ubus_context *ctx, struct ubus_event_hand
|
||||||
if (!msg || !type)
|
if (!msg || !type)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char *dm_path = get_events_dm_path(&u->event_handlers, type);
|
char *event_dm_path = get_events_dm_path(&u->event_handlers, type);
|
||||||
if (dm_path == NULL)
|
if (event_dm_path == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
char dm_path[MAX_DM_PATH];
|
||||||
|
|
||||||
|
replace_str(event_dm_path, ".{i}.", ".*.", dm_path, sizeof(dm_path));
|
||||||
|
if (strlen(dm_path) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char *str = blobmsg_format_json(msg, true);
|
char *str = blobmsg_format_json(msg, true);
|
||||||
|
|
@ -80,12 +86,16 @@ static void bbfdm_event_handler(struct ubus_context *ctx, struct ubus_event_hand
|
||||||
blob_buf_init(&bb, 0);
|
blob_buf_init(&bb, 0);
|
||||||
|
|
||||||
list_for_each_entry(param, &bbf_ctx.list_parameter, list) {
|
list_for_each_entry(param, &bbf_ctx.list_parameter, list) {
|
||||||
blobmsg_add_string(&bb, param->name, param->data);
|
if (strcmp(param->name, "Event_Path") == 0) {
|
||||||
|
blobmsg_add_string(&b, "name", param->data);
|
||||||
|
strncpyt(dm_path, param->data, sizeof(dm_path));
|
||||||
|
} else {
|
||||||
|
blobmsg_add_string(&bb, param->name, param->data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(method_name, sizeof(method_name), "%s.%s", DM_STRLEN(u->config.out_root_obj) ? u->config.out_root_obj : u->config.out_name, BBF_EVENT_NAME);
|
snprintf(method_name, sizeof(method_name), "%s.%s", DM_STRLEN(u->config.out_root_obj) ? u->config.out_root_obj : u->config.out_name, BBF_EVENT_NAME);
|
||||||
|
|
||||||
blobmsg_add_string(&b, "name", dm_path);
|
|
||||||
blobmsg_add_field(&b, BLOBMSG_TYPE_TABLE, "input", blob_data(bb.head), blob_len(bb.head));
|
blobmsg_add_field(&b, BLOBMSG_TYPE_TABLE, "input", blob_data(bb.head), blob_len(bb.head));
|
||||||
|
|
||||||
ubus_send_event(ctx, method_name, b.head);
|
ubus_send_event(ctx, method_name, b.head);
|
||||||
|
|
|
||||||
|
|
@ -45,15 +45,22 @@ static int get_event_args_WiFiDataElementsAssociationEvent_Associated(char *refp
|
||||||
|
|
||||||
static int event_WiFiDataElementsAssociationEvent_Associated(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
static int event_WiFiDataElementsAssociationEvent_Associated(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||||
{
|
{
|
||||||
char *event_time = dmjson_get_value((json_object *)value, 1, "eventTime");
|
switch (action) {
|
||||||
char *bssid = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent.AssocData", "DisassocData", "BSSID");
|
case EVENT_CHECK:
|
||||||
char *mac_addr = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent.AssocData", "DisassocData", "MACAddress");
|
// Nothing to check
|
||||||
|
break;
|
||||||
|
case EVENT_RUN:
|
||||||
|
char *event_time = dmjson_get_value((json_object *)value, 1, "eventTime");
|
||||||
|
char *bssid = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent.AssocData", "DisassocData", "BSSID");
|
||||||
|
char *mac_addr = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent.AssocData", "DisassocData", "MACAddress");
|
||||||
|
|
||||||
add_list_parameter(ctx, dmstrdup("TimeStamp"), dmstrdup(event_time), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("TimeStamp"), dmstrdup(event_time), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("BSSID"), dmstrdup(bssid), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("BSSID"), dmstrdup(bssid), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("MACAddress"), dmstrdup(mac_addr), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("MACAddress"), dmstrdup(mac_addr), DMT_TYPE[DMT_STRING], NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DMLEAF tWiFiDataElementsAssociationEventParams[] = {
|
DMLEAF tWiFiDataElementsAssociationEventParams[] = {
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,11 @@ enum set_value_action {
|
||||||
VALUESET
|
VALUESET
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum event_action_enum {
|
||||||
|
EVENT_RUN,
|
||||||
|
EVENT_CHECK
|
||||||
|
};
|
||||||
|
|
||||||
enum del_action_enum {
|
enum del_action_enum {
|
||||||
DEL_INST,
|
DEL_INST,
|
||||||
DEL_ALL
|
DEL_ALL
|
||||||
|
|
|
||||||
|
|
@ -2782,21 +2782,37 @@ static int mobj_event(DMOBJECT_ARGS)
|
||||||
static int mparam_event(DMPARAM_ARGS)
|
static int mparam_event(DMPARAM_ARGS)
|
||||||
{
|
{
|
||||||
char full_param[MAX_DM_PATH];
|
char full_param[MAX_DM_PATH];
|
||||||
|
int fault = 0;
|
||||||
|
|
||||||
snprintf(full_param, MAX_DM_PATH, "%s%s", node->current_object, leaf->parameter);
|
snprintf(full_param, MAX_DM_PATH, "%s%s", node->current_object, leaf->parameter);
|
||||||
|
|
||||||
if (DM_STRCMP(full_param, dmctx->in_param) != 0)
|
if (dmctx->iswildcard) {
|
||||||
return USP_FAULT_INVALID_PATH;
|
if (dm_strcmp_wildcard(dmctx->in_param, full_param) != 0)
|
||||||
|
return USP_FAULT_INVALID_PATH;
|
||||||
|
} else {
|
||||||
|
if (DM_STRCMP(dmctx->in_param, full_param) != 0)
|
||||||
|
return USP_FAULT_INVALID_PATH;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!leaf->setvalue) {
|
||||||
|
dmctx->stop = 1;
|
||||||
|
return USP_FAULT_INTERNAL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
json_object *j_input = (dmctx->in_value) ? json_tokener_parse(dmctx->in_value) : NULL;
|
||||||
|
|
||||||
|
fault = (leaf->setvalue)(full_param, dmctx, data, instance, (char *)j_input, EVENT_CHECK);
|
||||||
|
if (fault)
|
||||||
|
goto end;
|
||||||
|
|
||||||
dmctx->stop = 1;
|
dmctx->stop = 1;
|
||||||
|
|
||||||
if (!leaf->setvalue)
|
fault = (leaf->setvalue)(full_param, dmctx, data, instance, (char *)j_input, EVENT_RUN);
|
||||||
return USP_FAULT_INTERNAL_ERROR;
|
if (!fault)
|
||||||
|
add_list_parameter(dmctx, dmstrdup("Event_Path"), dmstrdup(full_param), DMT_TYPE[DMT_STRING], NULL);
|
||||||
|
|
||||||
json_object *j_input = (dmctx->in_value) ? json_tokener_parse(dmctx->in_value) : NULL;
|
end:
|
||||||
int fault = (leaf->setvalue)(full_param, dmctx, data, instance, (char *)j_input, 0);
|
|
||||||
json_object_put(j_input);
|
json_object_put(j_input);
|
||||||
|
|
||||||
return fault;
|
return fault;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2812,8 +2828,8 @@ int dm_entry_event(struct dmctx *dmctx)
|
||||||
dmctx->isevent = 1;
|
dmctx->isevent = 1;
|
||||||
dmctx->inparam_isparam = 1;
|
dmctx->inparam_isparam = 1;
|
||||||
dmctx->stop = 0;
|
dmctx->stop = 0;
|
||||||
dmctx->checkobj = plugin_obj_match;
|
dmctx->checkobj = (dmctx->iswildcard) ? plugin_obj_wildcard_match : plugin_obj_match;
|
||||||
dmctx->checkleaf = plugin_leaf_match;
|
dmctx->checkleaf = (dmctx->iswildcard) ? plugin_leaf_wildcard_match : plugin_leaf_match;
|
||||||
dmctx->method_obj = mobj_event;
|
dmctx->method_obj = mobj_event;
|
||||||
dmctx->method_param = mparam_event;
|
dmctx->method_param = mparam_event;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3876,23 +3876,32 @@ static int get_event_args_WiFiDataElementsAssociationEvent_Associated(char *refp
|
||||||
|
|
||||||
static int event_WiFiDataElementsAssociationEvent_Associated(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
static int event_WiFiDataElementsAssociationEvent_Associated(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||||
{
|
{
|
||||||
char *event_time = dmjson_get_value((json_object *)value, 1, "eventTime");
|
switch (action) {
|
||||||
char *bssid = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "BSSID");
|
case EVENT_CHECK:
|
||||||
char *mac_addr = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "MACAddress");
|
// Nothing to check
|
||||||
char *status_code = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "StatusCode");
|
break;
|
||||||
char *ht_cap = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "HTCapabilities");
|
case EVENT_RUN:
|
||||||
char *vht_cap = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "VHTCapabilities");
|
{
|
||||||
char *he_cap = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "HECapabilities");
|
char *event_time = dmjson_get_value((json_object *)value, 1, "eventTime");
|
||||||
|
char *bssid = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "BSSID");
|
||||||
|
char *mac_addr = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "MACAddress");
|
||||||
|
char *status_code = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "StatusCode");
|
||||||
|
char *ht_cap = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "HTCapabilities");
|
||||||
|
char *vht_cap = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "VHTCapabilities");
|
||||||
|
char *he_cap = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:AssociationEvent", "AssocData", "HECapabilities");
|
||||||
|
|
||||||
add_list_parameter(ctx, dmstrdup("TimeStamp"), dmstrdup(event_time), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("TimeStamp"), dmstrdup(event_time), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("BSSID"), dmstrdup(bssid), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("BSSID"), dmstrdup(bssid), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("MACAddress"), dmstrdup(mac_addr), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("MACAddress"), dmstrdup(mac_addr), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("StatusCode"), dmstrdup(status_code), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("StatusCode"), dmstrdup(status_code), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("HTCapabilities"), dmstrdup(ht_cap), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("HTCapabilities"), dmstrdup(ht_cap), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("VHTCapabilities"), dmstrdup(vht_cap), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("VHTCapabilities"), dmstrdup(vht_cap), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("HECapabilities"), dmstrdup(he_cap), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("HECapabilities"), dmstrdup(he_cap), DMT_TYPE[DMT_STRING], NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static event_args wifidataelementsdisassociationevent_disassociated_args = {
|
static event_args wifidataelementsdisassociationevent_disassociated_args = {
|
||||||
|
|
@ -3924,29 +3933,38 @@ static int get_event_args_WiFiDataElementsDisassociationEvent_Disassociated(char
|
||||||
|
|
||||||
static int event_WiFiDataElementsDisassociationEvent_Disassociated(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
static int event_WiFiDataElementsDisassociationEvent_Disassociated(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||||
{
|
{
|
||||||
char *event_time = dmjson_get_value((json_object *)value, 1, "eventTime");
|
switch (action) {
|
||||||
char *bssid = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "BSSID");
|
case EVENT_CHECK:
|
||||||
char *mac_addr = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "MACAddress");
|
// Nothing to check
|
||||||
char *reason_code = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "ReasonCode");
|
break;
|
||||||
char *bytes_sent = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "BytesSent");
|
case EVENT_RUN:
|
||||||
char *bytes_received = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "BytesReceived");
|
{
|
||||||
char *packet_sent = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "PacketsSent");
|
char *event_time = dmjson_get_value((json_object *)value, 1, "eventTime");
|
||||||
char *packet_received = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "PacketsReceived");
|
char *bssid = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "BSSID");
|
||||||
char *errors_sent = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "ErrorsSent");
|
char *mac_addr = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "MACAddress");
|
||||||
char *errors_received = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "ErrorsReceived");
|
char *reason_code = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "ReasonCode");
|
||||||
char *retrans_count = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "RetransCount");
|
char *bytes_sent = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "BytesSent");
|
||||||
|
char *bytes_received = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "BytesReceived");
|
||||||
|
char *packet_sent = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "PacketsSent");
|
||||||
|
char *packet_received = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "PacketsReceived");
|
||||||
|
char *errors_sent = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "ErrorsSent");
|
||||||
|
char *errors_received = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "ErrorsReceived");
|
||||||
|
char *retrans_count = dmjson_get_value((json_object *)value, 3, "wfa-dataelements:DisassociationEvent", "DisassocData", "RetransCount");
|
||||||
|
|
||||||
add_list_parameter(ctx, dmstrdup("TimeStamp"), dmstrdup(event_time), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("TimeStamp"), dmstrdup(event_time), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("BSSID"), dmstrdup(bssid), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("BSSID"), dmstrdup(bssid), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("MACAddress"), dmstrdup(mac_addr), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("MACAddress"), dmstrdup(mac_addr), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("ReasonCode"), dmstrdup(reason_code), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("ReasonCode"), dmstrdup(reason_code), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("BytesSent"), dmstrdup(bytes_sent), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("BytesSent"), dmstrdup(bytes_sent), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("BytesReceived"), dmstrdup(bytes_received), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("BytesReceived"), dmstrdup(bytes_received), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("PacketsSent"), dmstrdup(packet_sent), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("PacketsSent"), dmstrdup(packet_sent), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("PacketsReceived"), dmstrdup(packet_received), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("PacketsReceived"), dmstrdup(packet_received), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("ErrorsSent"), dmstrdup(errors_sent), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("ErrorsSent"), dmstrdup(errors_sent), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("ErrorsReceived"), dmstrdup(errors_received), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("ErrorsReceived"), dmstrdup(errors_received), DMT_TYPE[DMT_STRING], NULL);
|
||||||
add_list_parameter(ctx, dmstrdup("RetransCount"), dmstrdup(retrans_count), DMT_TYPE[DMT_STRING], NULL);
|
add_list_parameter(ctx, dmstrdup("RetransCount"), dmstrdup(retrans_count), DMT_TYPE[DMT_STRING], NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,24 @@ DM_MAP_OBJ tDynamicObj[] = {
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*************************************************************
|
||||||
|
* ENTRY METHOD
|
||||||
|
**************************************************************/
|
||||||
|
static int browseX_IOPSYS_EU_EventTESTInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance)
|
||||||
|
{
|
||||||
|
char *inst = NULL;
|
||||||
|
|
||||||
|
for (int i = 0; i < 2; i++) {
|
||||||
|
|
||||||
|
inst = handle_instance_without_section(dmctx, parent_node, i + 1);
|
||||||
|
|
||||||
|
if (DM_LINK_INST_OBJ(dmctx, parent_node, NULL, inst) == DM_STOP)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************
|
/*************************************************************
|
||||||
* GET & SET PARAM
|
* GET & SET PARAM
|
||||||
**************************************************************/
|
**************************************************************/
|
||||||
|
|
@ -158,6 +176,44 @@ static int get_event_args_XIOPSYSEU_Boot(char *refparam, struct dmctx *ctx, void
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static event_args test_event_args = {
|
||||||
|
.name = "bbf.test",
|
||||||
|
.param = (const char *[]) {
|
||||||
|
"CommandKey",
|
||||||
|
"Status",
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static int get_event_args_XIOPSYSEUEventTEST_Test(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
|
||||||
|
{
|
||||||
|
*value = (char *)&test_event_args;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int event_XIOPSYSEUEventTEST_Test(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||||
|
{
|
||||||
|
switch (action) {
|
||||||
|
case EVENT_CHECK:
|
||||||
|
{
|
||||||
|
char *test_instance = dmjson_get_value((json_object *)value, 1, "instance");
|
||||||
|
if (DM_STRCMP(test_instance, instance) != 0)
|
||||||
|
return USP_FAULT_INVALID_PATH_SYNTAX;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_RUN:
|
||||||
|
{
|
||||||
|
char *command_key = dmjson_get_value((json_object *)value, 1, "command_key");
|
||||||
|
char *status = dmjson_get_value((json_object *)value, 1, "status");
|
||||||
|
|
||||||
|
add_list_parameter(ctx, dmstrdup("CommandKey"), dmstrdup(command_key), DMT_TYPE[DMT_STRING], NULL);
|
||||||
|
add_list_parameter(ctx, dmstrdup("Status"), dmstrdup(status), DMT_TYPE[DMT_STRING], NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************************************************************************************************************
|
/**********************************************************************************************************************************
|
||||||
* OBJ & PARAM DEFINITION
|
* OBJ & PARAM DEFINITION
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
|
|
@ -166,6 +222,7 @@ DMOBJ tDynamicDeviceObj[] = {
|
||||||
/* OBJ, permission, addobj, delobj, checkdep, browseinstobj, nextdynamicobj, dynamicleaf, nextobj, leaf, linker, bbfdm_type, uniqueKeys*/
|
/* OBJ, permission, addobj, delobj, checkdep, browseinstobj, nextdynamicobj, dynamicleaf, nextobj, leaf, linker, bbfdm_type, uniqueKeys*/
|
||||||
{"X_IOPSYS_EU_Syslog", &DMREAD, NULL, NULL, "file:/etc/config/system", NULL, NULL, NULL, NULL, tX_IOPSYS_EU_SyslogParam, NULL, BBFDM_BOTH},
|
{"X_IOPSYS_EU_Syslog", &DMREAD, NULL, NULL, "file:/etc/config/system", NULL, NULL, NULL, NULL, tX_IOPSYS_EU_SyslogParam, NULL, BBFDM_BOTH},
|
||||||
{"X_IOPSYS_EU_PingTEST", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tX_IOPSYS_EU_PingTESTParam, NULL, BBFDM_BOTH},
|
{"X_IOPSYS_EU_PingTEST", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tX_IOPSYS_EU_PingTESTParam, NULL, BBFDM_BOTH},
|
||||||
|
{"X_IOPSYS_EU_EventTEST", &DMREAD, NULL, NULL, NULL, browseX_IOPSYS_EU_EventTESTInst, NULL, NULL, NULL, tX_IOPSYS_EU_EventTESTParam, NULL, BBFDM_BOTH},
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -192,3 +249,11 @@ DMLEAF tX_IOPSYS_EU_PingTESTParam[] = {
|
||||||
{"Run()", &DMASYNC, DMT_COMMAND, get_operate_args_XIOPSYSEUPingTEST_Run, operate_DeviceXIOPSYSEUPingTEST_Run, BBFDM_USP},
|
{"Run()", &DMASYNC, DMT_COMMAND, get_operate_args_XIOPSYSEUPingTEST_Run, operate_DeviceXIOPSYSEUPingTEST_Run, BBFDM_USP},
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*** Device.X_IOPSYS_EU_EventTEST. ***/
|
||||||
|
DMLEAF tX_IOPSYS_EU_EventTESTParam[] = {
|
||||||
|
/* PARAM, permission, type, getvalue, setvalue, bbfdm_type*/
|
||||||
|
{"Test!", &DMREAD, DMT_EVENT, get_event_args_XIOPSYSEUEventTEST_Test, event_XIOPSYSEUEventTEST_Test, BBFDM_USP},
|
||||||
|
{0}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ extern DMOBJ tDynamicDeviceObj[];
|
||||||
extern DMLEAF tDynamicDeviceParams[];
|
extern DMLEAF tDynamicDeviceParams[];
|
||||||
extern DMLEAF tX_IOPSYS_EU_SyslogParam[];
|
extern DMLEAF tX_IOPSYS_EU_SyslogParam[];
|
||||||
extern DMLEAF tX_IOPSYS_EU_PingTESTParam[];
|
extern DMLEAF tX_IOPSYS_EU_PingTESTParam[];
|
||||||
|
extern DMLEAF tX_IOPSYS_EU_EventTESTParam[];
|
||||||
|
|
||||||
#endif //__LIBBBFD_TEST_H
|
#endif //__LIBBBFD_TEST_H
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1667,7 +1667,7 @@ static void test_api_bbfdm_valid_library_event(void **state)
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_int_equal(idx, 9);
|
assert_int_not_equal(idx, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_api_bbfdm_valid_json_event(void **state)
|
static void test_api_bbfdm_valid_json_event(void **state)
|
||||||
|
|
@ -1714,7 +1714,7 @@ static void test_api_bbfdm_valid_json_event(void **state)
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_int_equal(idx, 9);
|
assert_int_not_equal(idx, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_api_bbfdm_valid_json_v1_event(void **state)
|
static void test_api_bbfdm_valid_json_v1_event(void **state)
|
||||||
|
|
@ -1763,7 +1763,7 @@ static void test_api_bbfdm_valid_json_v1_event(void **state)
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_int_equal(idx, 9);
|
assert_int_not_equal(idx, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue