Lines Matching +full:no +full:- +full:map
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2010-2011 Monthadar Al Jaberi, TerraNet AB
14 * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
18 * NO WARRANTY
22 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
96 plugin->wp_sdev = make_dev(&vis_cdevsw,0,UID_ROOT,GID_WHEEL,0600, in visibility_init()
98 plugin->wp_sdev->si_drv1 = vis_plugin; in visibility_init()
99 mtx_init(&vis_plugin->pl_mtx, "visibility_plugin mtx", in visibility_init()
110 destroy_dev(plugin->wp_sdev); in visibility_deinit()
111 mtx_destroy(&vis_plugin->pl_mtx); in visibility_deinit()
116 /* We need to use a mutex lock when we read out a visibility map
117 * and when we change visibility map from user space through IOCTL
124 struct wtap_hal *hal = (struct wtap_hal *)vis_plugin->base.wp_hal; in visibility_work()
125 struct vis_map *map; in visibility_work() local
127 KASSERT(mtod(p->m, const char *) != (const char *) 0xdeadc0de || in visibility_work()
128 mtod(p->m, const char *) != NULL, in visibility_work()
129 ("[%s] got a corrupt packet from master queue, p->m=%p, p->id=%d\n", in visibility_work()
130 __func__, p->m, p->id)); in visibility_work()
131 DWTAP_PRINTF("[%d] BROADCASTING m=%p\n", p->id, p->m); in visibility_work()
132 mtx_lock(&vis_plugin->pl_mtx); in visibility_work()
133 map = &vis_plugin->pl_node[p->id]; in visibility_work()
134 mtx_unlock(&vis_plugin->pl_mtx); in visibility_work()
142 uint32_t index = map->map[i]; in visibility_work()
147 if(hal->hal_devs[k] != NULL in visibility_work()
148 && hal->hal_devs[k]->up == 1){ in visibility_work()
150 hal->hal_devs[k]; in visibility_work()
152 m_dup(p->m, M_NOWAIT); in visibility_work()
154 "to new_m=%p\n", p->id, p->m, m); in visibility_work()
157 p->id, k); in visibility_work()
171 mtx_lock(&vis_plugin->pl_mtx); in add_link()
172 struct vis_map *map = &vis_plugin->pl_node[l->id1]; in add_link() local
173 int index = l->id2/ARRAY_SIZE; in add_link()
174 int bit = l->id2 % ARRAY_SIZE; in add_link()
176 map->map[index] = map->map[index] | value; in add_link()
177 mtx_unlock(&vis_plugin->pl_mtx); in add_link()
179 printf("l->id1=%d, l->id2=%d, map->map[%d] = %u, bit=%d\n", in add_link()
180 l->id1, l->id2, index, map->map[index], bit); in add_link()
188 mtx_lock(&vis_plugin->pl_mtx); in del_link()
189 struct vis_map *map = &vis_plugin->pl_node[l->id1]; in del_link() local
190 int index = l->id2/ARRAY_SIZE; in del_link()
191 int bit = l->id2 % ARRAY_SIZE; in del_link()
193 map->map[index] = map->map[index] & ~value; in del_link()
194 mtx_unlock(&vis_plugin->pl_mtx); in del_link()
196 printf("map->map[index] = %u\n", map->map[index]); in del_link()
205 (struct visibility_plugin *) sdev->si_drv1; in vis_ioctl()
206 struct wtap_hal *hal = vis_plugin->base.wp_hal; in vis_ioctl()
211 CURVNET_SET(CRED_TO_VNET(curthread->td_ucred)); in vis_ioctl()
216 medium_close(hal->hal_md); in vis_ioctl()
218 medium_open(hal->hal_md); in vis_ioctl()