static void get_client_info(char *info, const struct device *d) { int l = 0; struct group *g = d->group; struct db_device *dd = d->db_data; struct db_group *dg = g->db_data; struct db_discuss *dsc = g->discuss.current; struct db_vote *dvt = d->vote.v ? g->vote.current : NULL; const char *ver = get_client_version(); #define ADD_ARG(fmt, a...) SEP_ADD(info, l, ":", fmt, ##a) ADD_ARG("client_version=%s", ver[0]? ver:"0"); ADD_ARG("user_id=%s", dd->user_id); ADD_ARG("user_name=%s", dd->user_name); ADD_ARG("user_gender=%d", dd->user_gender); ADD_ARG("tag=%d", dd->tagid); ADD_ARG("sub=%d,%d", dd->sub1, dd->sub2); ADD_ARG("discuss_mode=%d", dg->discuss_mode); ADD_ARG("discuss_num=%d", dsc? g->discuss.curr_num : -1); ADD_ARG("discuss_name=%s", dsc? dsc->name : "0"); ADD_ARG("discuss_nmembers=%d", g->discuss.nmembers); ADD_ARG("discuss_idlist=%s", dsc? dsc->members : "0"); ADD_ARG("discuss_userlist=%s", dsc? g->discuss.membernames : "0"); ADD_ARG("discuss_chair=%d", dd->discuss_chair); ADD_ARG("discuss_open=%d", dd->discuss_open); ADD_ARG("regist_start=%d", dg->regist_start); ADD_ARG("regist_master=%d", dd->regist_master); ADD_ARG("regist_mode=%d", dg->regist_mode); ADD_ARG("regist_reg=%d", d->regist.reg); ADD_ARG("vote_num=%d", dvt? g->vote.curr_num : -1); ADD_ARG("vote_nmembers=%d", g->vote.nmembers); ADD_ARG("vote_idlist=%s", dvt? dvt->members : "0"); ADD_ARG("vote_userlist=%s", dvt? g->vote.membernames : "0"); ADD_ARG("vote_master=%d", dvt? dd->vote_master:0); ADD_ARG("vote_name=%s", dvt? dvt->name:"0"); ADD_ARG("vote_type=%d", dvt? dvt->type:0); ADD_ARG("vote_options=%s", dvt? dvt->options:"0"); ADD_ARG("vote_total=%d", d->vote.v? d->vote.v->n_members:0); ADD_ARG("vote_results=%s", dg->vote_results); ADD_ARG("vote_choice=%d", dd->vote_choice); }
utility_retcode_t init_rtsp_client(struct rtsp_client *client) { utility_retcode_t ret; FUNC_ENTER; syscalls_memset(client, 0, sizeof(*client)); get_client_name(client->name, sizeof(client->name)); get_client_host(client->host, sizeof(client->host)); get_client_version(client->version, sizeof(client->version)); get_user_agent(client->user_agent, sizeof(client->user_agent)); ret = get_random_bytes(client->challenge, sizeof(client->challenge)); if (UTILITY_SUCCESS != ret) { goto out; } ret = get_client_instance(client->instance, sizeof(client->instance)); out: FUNC_RETURN; return ret; }