• Home
  • Raw
  • Download

Lines Matching refs:ops

36 static struct genl_cmd *lookup_cmd(struct genl_ops *ops, int cmd_id)  in lookup_cmd()  argument
41 for (i = 0; i < ops->o_ncmds; i++) { in lookup_cmd()
42 cmd = &ops->o_cmds[i]; in lookup_cmd()
51 struct genl_ops *ops, struct nl_cache_ops *cache_ops, void *arg) in cmd_msg_parser() argument
61 if (!(cmd = lookup_cmd(ops, ghdr->cmd))) in cmd_msg_parser()
72 GENL_HDRSIZE(ops->o_hdrsize), in cmd_msg_parser()
92 static int genl_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, in genl_msg_parser() argument
95 if (ops->co_genl == NULL) in genl_msg_parser()
98 return cmd_msg_parser(who, nlh, ops->co_genl, ops, pp); in genl_msg_parser()
103 struct genl_ops *ops; in lookup_family() local
105 nl_list_for_each_entry(ops, &genl_ops_list, o_list) { in lookup_family()
106 if (ops->o_id == family) in lookup_family()
107 return ops; in lookup_family()
115 struct genl_ops *ops; in lookup_family_by_name() local
117 nl_list_for_each_entry(ops, &genl_ops_list, o_list) { in lookup_family_by_name()
118 if (!strcmp(ops->o_name, name)) in lookup_family_by_name()
119 return ops; in lookup_family_by_name()
127 struct genl_ops *ops; in genl_op2name() local
130 if ((ops = lookup_family(family))) { in genl_op2name()
131 for (i = 0; i < ops->o_ncmds; i++) { in genl_op2name()
133 cmd = &ops->o_cmds[i]; in genl_op2name()
171 int genl_register_family(struct genl_ops *ops) in genl_register_family() argument
173 if (!ops->o_name) in genl_register_family()
176 if (ops->o_cmds && ops->o_ncmds <= 0) in genl_register_family()
179 if (ops->o_id && lookup_family(ops->o_id)) in genl_register_family()
182 if (lookup_family_by_name(ops->o_name)) in genl_register_family()
185 nl_list_add_tail(&ops->o_list, &genl_ops_list); in genl_register_family()
201 int genl_unregister_family(struct genl_ops *ops) in genl_unregister_family() argument
203 nl_list_del(&ops->o_list); in genl_unregister_family()
218 struct genl_ops *ops; in genl_handle_msg() local
223 if (!(ops = lookup_family(nlh->nlmsg_type))) in genl_handle_msg()
226 return cmd_msg_parser(nlmsg_get_src(msg), nlh, ops, NULL, arg); in genl_handle_msg()
248 int genl_register(struct nl_cache_ops *ops) in genl_register() argument
252 if (ops->co_protocol != NETLINK_GENERIC) { in genl_register()
257 if (ops->co_hdrsize < GENL_HDRSIZE(0)) { in genl_register()
262 if (ops->co_genl == NULL) { in genl_register()
267 ops->co_genl->o_cache_ops = ops; in genl_register()
268 ops->co_genl->o_hdrsize = ops->co_hdrsize - GENL_HDRLEN; in genl_register()
269 ops->co_genl->o_name = ops->co_msgtypes[0].mt_name; in genl_register()
270 ops->co_genl->o_id = ops->co_msgtypes[0].mt_id; in genl_register()
271 ops->co_msg_parser = genl_msg_parser; in genl_register()
273 if ((err = genl_register_family(ops->co_genl)) < 0) in genl_register()
276 err = nl_cache_mngt_register(ops); in genl_register()
285 void genl_unregister(struct nl_cache_ops *ops) in genl_unregister() argument
287 if (!ops) in genl_unregister()
290 nl_cache_mngt_unregister(ops); in genl_unregister()
292 genl_unregister_family(ops->co_genl); in genl_unregister()
298 static int __genl_ops_resolve(struct nl_cache *ctrl, struct genl_ops *ops) in __genl_ops_resolve() argument
302 family = genl_ctrl_search_by_name(ctrl, ops->o_name); in __genl_ops_resolve()
304 ops->o_id = genl_family_get_id(family); in __genl_ops_resolve()
306 if (ops->o_cache_ops) in __genl_ops_resolve()
307 ops->o_cache_ops->co_msgtypes[0].mt_id = ops->o_id; in __genl_ops_resolve()
317 int genl_resolve_id(struct genl_ops *ops) in genl_resolve_id() argument
323 if (ops->o_id != 0) in genl_resolve_id()
326 if (!ops->o_name) in genl_resolve_id()
335 err = genl_ops_resolve(sk, ops); in genl_resolve_id()
358 int genl_ops_resolve(struct nl_sock *sk, struct genl_ops *ops) in genl_ops_resolve() argument
366 err = __genl_ops_resolve(ctrl, ops); in genl_ops_resolve()
389 struct genl_ops *ops; in genl_mngt_resolve() local
395 nl_list_for_each_entry(ops, &genl_ops_list, o_list) { in genl_mngt_resolve()
396 err = __genl_ops_resolve(ctrl, ops); in genl_mngt_resolve()