int32 subscribe_event(listener_dest_t *listener, int8 *evt_str)
{
	memdb_integer evt_nid = 0;
	memdb_integer listener_nid = 0;
	int32 mask = 0;
	int32 rc = 0;
	int32 type = get_rf_evt_type(evt_str);
	int32 root_type = get_root_evt_type(type);

	listener_nid = libwrap_get_listener(listener->dest, &evt_nid, type);
	if (listener_nid == -1) {
		HTTPD_ERR("get redfish event listener error, type is %d\n", type);
		return -1;
	}

	if (libwrap_evt_subscribe(listener, listener_nid, evt_nid) != 0)
		return rc;

	/* subscribe resource root */
	listener_nid = libwrap_get_listener(listener->dest, &evt_nid, root_type);
	if (listener_nid == -1) {
		HTTPD_ERR("get redfish event listener error, type is %d\n", type);
		return -1;
	}

	if (libwrap_evt_subscribe(listener, listener_nid, evt_nid) != 0)
		return rc;

	return 0;
}
int32 unsubscribe_event(listener_dest_t *listener, int8 *evt_str, int32 type)
{
	memdb_integer evt_nid;
	memdb_integer listener_nid = 0;
	int32 mask = 0;

	listener_nid = libwrap_get_listener(listener->dest, evt_str, &evt_nid, type);

	if (listener_nid == 0)
		return 0;

	return libwrap_unsubscribe_listener(listener, listener_nid);
}
int32 subscribe_event(listener_dest_t *listener, int8 *evt_str, int32 type)
{
	memdb_integer evt_nid = 0;
	memdb_integer listener_nid = 0;
	int32 mask = 0;

	listener_nid = libwrap_get_listener(listener->dest, evt_str, &evt_nid, type);
	if (listener_nid == -1) {
		HTTPD_ERR("get redfish event listener error, type is %d\n", type);
		return -1;
	}

	return libwrap_subscribe_listener(listener, listener_nid, evt_nid);
}