Lines Matching refs:group
41 struct psample_group *group, in psample_group_nl_fill() argument
52 ret = nla_put_u32(msg, PSAMPLE_ATTR_SAMPLE_GROUP, group->group_num); in psample_group_nl_fill()
56 ret = nla_put_u32(msg, PSAMPLE_ATTR_GROUP_REFCOUNT, group->refcount); in psample_group_nl_fill()
60 ret = nla_put_u32(msg, PSAMPLE_ATTR_GROUP_SEQ, group->seq); in psample_group_nl_fill()
75 struct psample_group *group; in psample_nl_cmd_get_group_dumpit() local
81 list_for_each_entry(group, &psample_groups_list, list) { in psample_nl_cmd_get_group_dumpit()
82 if (!net_eq(group->net, sock_net(msg->sk))) in psample_nl_cmd_get_group_dumpit()
88 err = psample_group_nl_fill(msg, group, PSAMPLE_CMD_NEW_GROUP, in psample_nl_cmd_get_group_dumpit()
123 static void psample_group_notify(struct psample_group *group, in psample_group_notify() argument
133 err = psample_group_nl_fill(msg, group, cmd, 0, 0, NLM_F_MULTI); in psample_group_notify()
135 genlmsg_multicast_netns(&psample_nl_family, group->net, msg, 0, in psample_group_notify()
144 struct psample_group *group; in psample_group_create() local
146 group = kzalloc(sizeof(*group), GFP_ATOMIC); in psample_group_create()
147 if (!group) in psample_group_create()
150 group->net = net; in psample_group_create()
151 group->group_num = group_num; in psample_group_create()
152 list_add_tail(&group->list, &psample_groups_list); in psample_group_create()
154 psample_group_notify(group, PSAMPLE_CMD_NEW_GROUP); in psample_group_create()
155 return group; in psample_group_create()
158 static void psample_group_destroy(struct psample_group *group) in psample_group_destroy() argument
160 psample_group_notify(group, PSAMPLE_CMD_DEL_GROUP); in psample_group_destroy()
161 list_del(&group->list); in psample_group_destroy()
162 kfree_rcu(group, rcu); in psample_group_destroy()
168 struct psample_group *group; in psample_group_lookup() local
170 list_for_each_entry(group, &psample_groups_list, list) in psample_group_lookup()
171 if ((group->group_num == group_num) && (group->net == net)) in psample_group_lookup()
172 return group; in psample_group_lookup()
178 struct psample_group *group; in psample_group_get() local
182 group = psample_group_lookup(net, group_num); in psample_group_get()
183 if (!group) { in psample_group_get()
184 group = psample_group_create(net, group_num); in psample_group_get()
185 if (!group) in psample_group_get()
188 group->refcount++; in psample_group_get()
192 return group; in psample_group_get()
196 void psample_group_take(struct psample_group *group) in psample_group_take() argument
199 group->refcount++; in psample_group_take()
204 void psample_group_put(struct psample_group *group) in psample_group_put() argument
208 if (--group->refcount == 0) in psample_group_put()
209 psample_group_destroy(group); in psample_group_put()
363 void psample_sample_packet(struct psample_group *group, in psample_sample_packet() argument
380 if (!genl_has_listeners(&psample_nl_family, group->net, in psample_sample_packet()
440 ret = nla_put_u32(nl_skb, PSAMPLE_ATTR_SAMPLE_GROUP, group->group_num); in psample_sample_packet()
444 ret = nla_put_u32(nl_skb, PSAMPLE_ATTR_GROUP_SEQ, group->seq++); in psample_sample_packet()
508 genlmsg_multicast_netns(&psample_nl_family, group->net, nl_skb, 0, in psample_sample_packet()