• Home
  • Raw
  • Download

Lines Matching full:ops

30 static struct genl_cmd *lookup_cmd(struct genl_ops *ops, int cmd_id)  in lookup_cmd()  argument
35 for (i = 0; i < ops->o_ncmds; i++) { in lookup_cmd()
36 cmd = &ops->o_cmds[i]; in lookup_cmd()
45 struct genl_ops *ops, struct nl_cache_ops *cache_ops, void *arg) in cmd_msg_parser() argument
55 if (!(cmd = lookup_cmd(ops, ghdr->cmd))) in cmd_msg_parser()
66 GENL_HDRSIZE(ops->o_hdrsize), in cmd_msg_parser()
86 static int genl_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, in genl_msg_parser() argument
89 if (ops->co_genl == NULL) in genl_msg_parser()
92 return cmd_msg_parser(who, nlh, ops->co_genl, ops, pp); in genl_msg_parser()
97 struct genl_ops *ops; in lookup_family() local
99 nl_list_for_each_entry(ops, &genl_ops_list, o_list) { in lookup_family()
100 if (ops->o_id == family) in lookup_family()
101 return ops; in lookup_family()
109 struct genl_ops *ops; in lookup_family_by_name() local
111 nl_list_for_each_entry(ops, &genl_ops_list, o_list) { in lookup_family_by_name()
112 if (!strcmp(ops->o_name, name)) in lookup_family_by_name()
113 return ops; in lookup_family_by_name()
121 struct genl_ops *ops; in genl_op2name() local
124 if ((ops = lookup_family(family))) { in genl_op2name()
125 for (i = 0; i < ops->o_ncmds; i++) { in genl_op2name()
127 cmd = &ops->o_cmds[i]; in genl_op2name()
149 * @arg ops Generic Netlink family definition
165 int genl_register_family(struct genl_ops *ops) in genl_register_family() argument
167 if (!ops->o_name) in genl_register_family()
170 if (ops->o_cmds && ops->o_ncmds <= 0) in genl_register_family()
173 if (ops->o_id && lookup_family(ops->o_id)) in genl_register_family()
176 if (lookup_family_by_name(ops->o_name)) in genl_register_family()
179 nl_list_add_tail(&ops->o_list, &genl_ops_list); in genl_register_family()
186 * @arg ops Generic Netlink family definition
195 int genl_unregister_family(struct genl_ops *ops) in genl_unregister_family() argument
197 nl_list_del(&ops->o_list); in genl_unregister_family()
212 struct genl_ops *ops; in genl_handle_msg() local
217 if (!(ops = lookup_family(nlh->nlmsg_type))) in genl_handle_msg()
220 return cmd_msg_parser(nlmsg_get_src(msg), nlh, ops, NULL, arg); in genl_handle_msg()
232 * @arg ops Cache operations definition
242 int genl_register(struct nl_cache_ops *ops) in genl_register() argument
246 if (ops->co_protocol != NETLINK_GENERIC) { in genl_register()
251 if (ops->co_hdrsize < (int)GENL_HDRSIZE(0)) { in genl_register()
256 if (ops->co_genl == NULL) { in genl_register()
261 ops->co_genl->o_cache_ops = ops; in genl_register()
262 ops->co_genl->o_hdrsize = ops->co_hdrsize - GENL_HDRLEN; in genl_register()
263 ops->co_genl->o_name = ops->co_msgtypes[0].mt_name; in genl_register()
264 ops->co_genl->o_id = ops->co_msgtypes[0].mt_id; in genl_register()
265 ops->co_msg_parser = genl_msg_parser; in genl_register()
267 if ((err = genl_register_family(ops->co_genl)) < 0) in genl_register()
270 err = nl_cache_mngt_register(ops); in genl_register()
277 * @arg ops Cache operations definition
279 void genl_unregister(struct nl_cache_ops *ops) in genl_unregister() argument
281 if (!ops) in genl_unregister()
284 nl_cache_mngt_unregister(ops); in genl_unregister()
286 genl_unregister_family(ops->co_genl); in genl_unregister()
292 static int __genl_ops_resolve(struct nl_cache *ctrl, struct genl_ops *ops) in __genl_ops_resolve() argument
296 family = genl_ctrl_search_by_name(ctrl, ops->o_name); in __genl_ops_resolve()
298 ops->o_id = genl_family_get_id(family); in __genl_ops_resolve()
300 if (ops->o_cache_ops) in __genl_ops_resolve()
301 ops->o_cache_ops->co_msgtypes[0].mt_id = ops->o_id; in __genl_ops_resolve()
312 int genl_resolve_id(struct genl_ops *ops) in genl_resolve_id() argument
318 if (ops->o_id != 0) in genl_resolve_id()
321 if (!ops->o_name) in genl_resolve_id()
330 err = genl_ops_resolve(sk, ops); in genl_resolve_id()
347 * @arg ops Generic Netlink family definition
353 int genl_ops_resolve(struct nl_sock *sk, struct genl_ops *ops) in genl_ops_resolve() argument
361 err = __genl_ops_resolve(ctrl, ops); in genl_ops_resolve()
384 struct genl_ops *ops; in genl_mngt_resolve() local
390 nl_list_for_each_entry(ops, &genl_ops_list, o_list) { in genl_mngt_resolve()
391 err = __genl_ops_resolve(ctrl, ops); in genl_mngt_resolve()