Home | History | Annotate | Download | only in lib

Lines Matching refs:mngr

69 	struct nl_cache_mngr *mngr = arg;
79 mngr, msg);
85 if (mngr->cm_protocol != protocol)
88 for (i = 0; i < mngr->cm_nassocs; i++) {
89 if (mngr->cm_assocs[i].ca_cache) {
90 ops = mngr->cm_assocs[i].ca_cache->c_ops;
101 msg, mngr->cm_assocs[i].ca_cache);
102 p.pp_arg = &mngr->cm_assocs[i];
138 struct nl_cache_mngr *mngr;
145 mngr = calloc(1, sizeof(*mngr));
146 if (!mngr)
156 mngr->cm_sock = sk;
157 mngr->cm_nassocs = NASSOC_INIT;
158 mngr->cm_protocol = protocol;
159 mngr->cm_flags = flags;
160 mngr->cm_assocs = calloc(mngr->cm_nassocs,
162 if (!mngr->cm_assocs)
166 nl_socket_disable_seq_check(mngr->cm_sock);
168 if ((err = nl_connect(mngr->cm_sock, protocol)) < 0)
171 if ((err = nl_socket_set_nonblocking(mngr->cm_sock)) < 0)
175 mngr->cm_sync_sock = nl_socket_alloc();
176 if (!mngr->cm_sync_sock) {
180 if ((err = nl_connect(mngr->cm_sync_sock, protocol)) < 0)
184 mngr, protocol, mngr->cm_nassocs);
186 *result = mngr;
190 nl_socket_free(mngr->cm_sync_sock);
192 nl_cache_mngr_free(mngr);
198 * @arg mngr Cache manager.
221 int nl_cache_mngr_add_cache(struct nl_cache_mngr *mngr, struct nl_cache *cache,
232 if (ops->co_protocol != mngr->cm_protocol)
238 for (i = 0; i < mngr->cm_nassocs; i++)
239 if (mngr->cm_assocs[i].ca_cache &&
240 mngr->cm_assocs[i].ca_cache->c_ops == ops)
244 for (i = 0; i < mngr->cm_nassocs; i++)
245 if (!mngr->cm_assocs[i].ca_cache)
248 if (i >= mngr->cm_nassocs) {
249 mngr->cm_nassocs += NASSOC_EXPAND;
250 mngr->cm_assocs = realloc(mngr->cm_assocs,
251 mngr->cm_nassocs *
253 if (mngr->cm_assocs == NULL)
256 memset(mngr->cm_assocs + (mngr->cm_nassocs - NASSOC_EXPAND), 0,
260 "to %d\n", mngr, mngr->cm_nassocs);
265 err = nl_socket_add_membership(mngr->cm_sock, grp->ag_group);
270 err = nl_cache_refill(mngr->cm_sync_sock, cache);
274 mngr->cm_assocs[i].ca_cache = cache;
275 mngr->cm_assocs[i].ca_change = cb;
276 mngr->cm_assocs[i].ca_change_data = data;
278 if (mngr->cm_flags & NL_AUTO_PROVIDE)
282 cache, nl_cache_name(cache), mngr);
288 nl_socket_drop_membership(mngr->cm_sock, grp->ag_group);
295 * @arg mngr Cache manager.
321 int nl_cache_mngr_add(struct nl_cache_mngr *mngr, const char *name,
337 err = nl_cache_mngr_add_cache(mngr, cache, cb, data);
352 * @arg mngr Cache Manager
359 int nl_cache_mngr_get_fd(struct nl_cache_mngr *mngr)
361 return nl_socket_get_fd(mngr->cm_sock);
366 * @arg mngr Cache Manager
383 int nl_cache_mngr_poll(struct nl_cache_mngr *mngr, int timeout)
387 .fd = nl_socket_get_fd(mngr->cm_sock),
391 NL_DBG(3, "Cache manager %p, poll() fd %d\n", mngr, fds.fd);
393 NL_DBG(3, "Cache manager %p, poll() returned %d\n", mngr, ret);
401 return nl_cache_mngr_data_ready(mngr);
406 * @arg mngr Cache manager
419 int nl_cache_mngr_data_ready(struct nl_cache_mngr *mngr)
425 mngr, nl_socket_get_fd(mngr->cm_sock));
427 cb = nl_cb_clone(mngr->cm_sock->s_cb);
431 nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, event_input, mngr);
433 while ((err = nl_recvmsgs_report(mngr->cm_sock, cb)) > 0) {
435 mngr, err);
448 * @arg mngr Cache manager
455 void nl_cache_mngr_info(struct nl_cache_mngr *mngr, struct nl_dump_params *p)
460 nl_dump_line(p, "cache-manager <%p>\n", mngr);
462 nl_nlfamily2str(mngr->cm_protocol, buf, sizeof(buf)));
463 nl_dump_line(p, " .flags = %#x\n", mngr->cm_flags);
464 nl_dump_line(p, " .nassocs = %u\n", mngr->cm_nassocs);
465 nl_dump_line(p, " .sock = <%p>\n", mngr->cm_sock);
467 for (i = 0; i < mngr->cm_nassocs; i++) {
468 struct nl_cache_assoc *assoc = &mngr->cm_assocs[i];
490 * @arg mngr Cache manager.
494 void nl_cache_mngr_free(struct nl_cache_mngr *mngr)
498 if (!mngr)
501 if (mngr->cm_sock)
502 nl_close(mngr->cm_sock);
504 if (mngr->cm_sync_sock) {
505 nl_close(mngr->cm_sync_sock);
506 nl_socket_free(mngr->cm_sync_sock);
509 if (mngr->cm_flags & NL_ALLOCATED_SOCK)
510 nl_socket_free(mngr->cm_sock);
512 for (i = 0; i < mngr->cm_nassocs; i++) {
513 if (mngr->cm_assocs[i].ca_cache) {
514 nl_cache_mngt_unprovide(mngr->cm_assocs[i].ca_cache);
515 nl_cache_free(mngr->cm_assocs[i].ca_cache);
519 free(mngr->cm_assocs);
521 NL_DBG(1, "Cache manager %p freed\n", mngr);
523 free(mngr);