rem: DOUBLE_LINKED_LIST_ADD(ss->first_vs, ss->last_vs, vs);
add: ptr_vector_add(&ss->vs, vs);
context: static int create_virtual_subscriptions(struct sip_msg *m, rl_subscription_t *ss, const char *xcap_root){	flat_list_t *e, *flat = NULL;	xcap_query_t xcap;	virtual_subscription_t *vs;	int res;	str s;		/* TODO: create virtual subscriptions using Accept headers ... (for remote subscriptions) */		/* XCAP query */	memset(&xcap, 0, sizeof(xcap));	DEBUG_LOG("rli_create_content(): doing XCAP query\n");	res = get_rls(xcap_root, rls_get_uri(ss), &xcap, 			rls_get_package(ss), &flat);	if (res != RES_OK) return res;	/* go through flat list and find/create virtual subscriptions */	e = flat;	while (e) {		s.s = e->uri;		if (s.s) s.len = strlen(s.s);		else s.len = 0;		res = vs_create(&s, rls_get_package(ss), &vs, e->names, ss);				if (res != RES_OK) return res;		DOUBLE_LINKED_LIST_ADD(ss->first_vs, ss->last_vs, vs);		e = e->next;	}	DEBUG_LOG("rli_create_content(): freeing flat list\n");	free_flat_list(flat);	return RES_OK;}