Lines Matching defs:gf
51 const struct genl_family *gf, struct nl_writer *nw);
60 struct genl_family *gf = NULL;
65 if (__predict_false(family_id < 0 || (gf = genl_get_family(family_id)) == NULL)) {
78 if (ghdr->cmd >= gf->family_cmd_size || gf->family_cmds[ghdr->cmd].cmd_cb == NULL) {
80 gf->family_name, ghdr->cmd);
84 struct genl_cmd *cmd = &gf->family_cmds[ghdr->cmd];
88 gf->family_name, ghdr->cmd);
93 gf->family_name, cmd->cmd_name, ghdr->cmd, hdr->nlmsg_len);
111 const struct genl_family *gf, struct nl_writer *nw)
118 ghdr_new->version = gf->family_version;
121 nlattr_add_string(nw, CTRL_ATTR_FAMILY_NAME, gf->family_name);
122 nlattr_add_u16(nw, CTRL_ATTR_FAMILY_ID, genl_get_family_id(gf));
123 nlattr_add_u32(nw, CTRL_ATTR_VERSION, gf->family_version);
124 nlattr_add_u32(nw, CTRL_ATTR_HDRSIZE, gf->family_hdrsize);
125 nlattr_add_u32(nw, CTRL_ATTR_MAXATTR, gf->family_attr_max);
127 if (gf->family_cmd_size > 0) {
131 for (int i = 0, cnt=0; i < gf->family_cmd_size; i++) {
132 struct genl_cmd *cmd = &gf->family_cmds[i];
145 if (gf->family_num_groups > 0) {
151 if (gg == NULL || gg->group_family != gf)
166 NL_LOG(LOG_DEBUG, "unable to dump family %s state (ENOMEM)", gf->family_name);
173 static void nlctrl_notify(void *arg, const struct genl_family *gf, int action);
197 match_family(const struct genl_family *gf, const struct nl_parsed_family *attrs)
199 if (gf->family_name == NULL)
201 if (attrs->family_id != 0 && attrs->family_id != genl_get_family_id(gf))
203 if (attrs->family_name != NULL && strcmp(attrs->family_name, gf->family_name))
225 struct genl_family *gf = genl_get_family(i);
226 if (gf != NULL && match_family(gf, &attrs)) {
227 error = dump_family(hdr, &ghdr, gf, npt->nw);
236 struct genl_family *gf = genl_get_family(i);
237 if (gf != NULL && match_family(gf, &attrs)) {
238 error = dump_family(hdr, &ghdr, gf, npt->nw);
253 nlctrl_notify(void *arg __unused, const struct genl_family *gf, int cmd)
265 dump_family(&hdr, &ghdr, gf, &nw);
359 struct genl_family *gf;
368 gf = find_empty_family_id(family_name);
369 KASSERT(gf, ("%s: maximum of %u generic netlink families allocated",
372 *gf = (struct genl_family) {
378 family_id = genl_get_family_id(gf);
381 NL_LOG(LOG_DEBUG2, "Registered family %s id %d", gf->family_name,
383 EVENTHANDLER_INVOKE(genl_family_event, gf, CTRL_CMD_NEWFAMILY);
389 free_family(struct genl_family *gf)
391 if (gf->family_cmds != NULL)
392 free(gf->family_cmds, M_NETLINK);
399 unregister_groups(const struct genl_family *gf)
404 if (gg->group_family == gf && gg->group_name != NULL) {
420 struct genl_family *gf = find_family(family_name);
422 if (gf != NULL) {
423 EVENTHANDLER_INVOKE(genl_family_event, gf, CTRL_CMD_DELFAMILY);
425 unregister_groups(gf);
427 free_family(gf);
428 bzero(gf, sizeof(*gf));
439 struct genl_family *gf;
443 if ((gf = find_family(family_name)) == NULL) {
448 cmd_size = gf->family_cmd_size;
456 if (cmd_size > gf->family_cmd_size) {
463 memcpy(data, gf->family_cmds,
464 gf->family_cmd_size * sizeof(struct genl_cmd));
465 old_data = gf->family_cmds;
466 gf->family_cmds = data;
467 gf->family_cmd_size = cmd_size;
474 MPASS(gf->family_cmds[cmd->cmd_num].cmd_cb == NULL);
475 gf->family_cmds[cmd->cmd_num] = cmds[i];
477 cmd->cmd_name, cmd->cmd_num, gf->family_name);
484 find_group(const struct genl_family *gf, const char *group_name)
488 if (gg->group_family == gf &&
498 struct genl_family *gf;
505 if ((gf = find_family(family_name)) == NULL ||
506 find_group(gf, group_name) != NULL) {
515 gf->family_num_groups++;
516 gg->group_family = gf;
535 genl_get_family_name(const struct genl_family *gf)
537 return (gf->family_name);
541 genl_get_family_id(const struct genl_family *gf)
543 MPASS(gf >= &families[0] && gf < &families[MAX_FAMILIES]);
544 return ((uint16_t)(gf - &families[0]) + GENL_MIN_ID);