Lines Matching full:ops
52 struct rtnl_link_info_ops *ops; in __rtnl_link_info_ops_lookup() local
54 nl_list_for_each_entry(ops, &info_ops, io_list) in __rtnl_link_info_ops_lookup()
55 if (!strcmp(ops->io_name, name)) in __rtnl_link_info_ops_lookup()
56 return ops; in __rtnl_link_info_ops_lookup()
76 struct rtnl_link_info_ops *ops; in rtnl_link_info_ops_lookup() local
79 if ((ops = __rtnl_link_info_ops_lookup(name))) in rtnl_link_info_ops_lookup()
80 ops->io_refcnt++; in rtnl_link_info_ops_lookup()
83 return ops; in rtnl_link_info_ops_lookup()
88 * @arg ops Link info operations.
90 void rtnl_link_info_ops_get(struct rtnl_link_info_ops *ops) in rtnl_link_info_ops_get() argument
92 if (!ops) in rtnl_link_info_ops_get()
96 ops->io_refcnt++; in rtnl_link_info_ops_get()
102 * @arg ops Link info operations.
104 void rtnl_link_info_ops_put(struct rtnl_link_info_ops *ops) in rtnl_link_info_ops_put() argument
106 if (!ops) in rtnl_link_info_ops_put()
110 _nl_assert(ops->io_refcnt > 0); in rtnl_link_info_ops_put()
111 ops->io_refcnt--; in rtnl_link_info_ops_put()
117 * @arg ops Link info operations
127 int rtnl_link_register_info(struct rtnl_link_info_ops *ops) in rtnl_link_register_info() argument
131 if (ops->io_name == NULL) in rtnl_link_register_info()
135 if (__rtnl_link_info_ops_lookup(ops->io_name)) { in rtnl_link_register_info()
140 NL_DBG(1, "Registered link info operations %s\n", ops->io_name); in rtnl_link_register_info()
142 nl_list_add_tail(&ops->io_list, &info_ops); in rtnl_link_register_info()
151 * @arg ops Link info operations
162 int rtnl_link_unregister_info(struct rtnl_link_info_ops *ops) in rtnl_link_unregister_info() argument
170 if (t == ops) { in rtnl_link_unregister_info()
180 ops->io_name); in rtnl_link_unregister_info()
224 * @arg ops Address family operations.
226 void rtnl_link_af_ops_put(struct rtnl_link_af_ops *ops) in rtnl_link_af_ops_put() argument
228 if (ops) { in rtnl_link_af_ops_put()
230 ops->ao_refcnt--; in rtnl_link_af_ops_put()
238 * @arg ops Address family operations
250 const struct rtnl_link_af_ops *ops) in rtnl_link_af_alloc() argument
254 if (!link || !ops) in rtnl_link_af_alloc()
257 family = ops->ao_family; in rtnl_link_af_alloc()
260 if (!ops->ao_alloc) in rtnl_link_af_alloc()
263 link->l_af_data[family] = ops->ao_alloc(link); in rtnl_link_af_alloc()
274 * @arg ops Address family operations
285 const struct rtnl_link_af_ops *ops) in rtnl_link_af_data() argument
287 if (!link || !ops) in rtnl_link_af_data()
290 return link->l_af_data[ops->ao_family]; in rtnl_link_af_data()
295 * @arg ops Address family operations
305 int rtnl_link_af_register(struct rtnl_link_af_ops *ops) in rtnl_link_af_register() argument
309 if (ops->ao_family == AF_UNSPEC || ops->ao_family >= AF_MAX) in rtnl_link_af_register()
313 if (af_ops[ops->ao_family]) { in rtnl_link_af_register()
318 ops->ao_refcnt = 0; in rtnl_link_af_register()
319 af_ops[ops->ao_family] = ops; in rtnl_link_af_register()
322 ops->ao_family); in rtnl_link_af_register()
332 * @arg ops Address family operations
340 * @return -NLE_INVAL ops is NULL
344 int rtnl_link_af_unregister(struct rtnl_link_af_ops *ops) in rtnl_link_af_unregister() argument
348 if (!ops) in rtnl_link_af_unregister()
352 if (!af_ops[ops->ao_family]) { in rtnl_link_af_unregister()
357 if (ops->ao_refcnt > 0) { in rtnl_link_af_unregister()
362 af_ops[ops->ao_family] = NULL; in rtnl_link_af_unregister()
365 ops->ao_family); in rtnl_link_af_unregister()