Lines Matching full:l2

29 static int wpa_priv_cmd(struct l2_packet_data *l2, int cmd,  in wpa_priv_cmd()  argument
43 msg.msg_name = &l2->priv_addr; in wpa_priv_cmd()
44 msg.msg_namelen = sizeof(l2->priv_addr); in wpa_priv_cmd()
46 if (sendmsg(l2->fd, &msg, 0) < 0) { in wpa_priv_cmd()
47 wpa_printf(MSG_ERROR, "L2: sendmsg(cmd): %s", strerror(errno)); in wpa_priv_cmd()
55 int l2_packet_get_own_addr(struct l2_packet_data *l2, u8 *addr) in l2_packet_get_own_addr() argument
57 os_memcpy(addr, l2->own_addr, ETH_ALEN); in l2_packet_get_own_addr()
62 int l2_packet_send(struct l2_packet_data *l2, const u8 *dst_addr, u16 proto, in l2_packet_send() argument
81 msg.msg_name = &l2->priv_addr; in l2_packet_send()
82 msg.msg_namelen = sizeof(l2->priv_addr); in l2_packet_send()
84 if (sendmsg(l2->fd, &msg, 0) < 0) { in l2_packet_send()
85 wpa_printf(MSG_ERROR, "L2: sendmsg(packet_send): %s", in l2_packet_send()
96 struct l2_packet_data *l2 = eloop_ctx; in l2_packet_receive() local
111 wpa_printf(MSG_DEBUG, "L2: Too show packet received"); in l2_packet_receive()
116 os_strncmp(from.sun_path, l2->priv_addr.sun_path, in l2_packet_receive()
118 wpa_printf(MSG_DEBUG, "L2: Received message from unexpected " in l2_packet_receive()
123 l2->rx_callback(l2->rx_callback_ctx, buf, buf + ETH_ALEN, in l2_packet_receive()
134 struct l2_packet_data *l2; in l2_packet_init() local
146 l2 = os_zalloc(sizeof(struct l2_packet_data)); in l2_packet_init()
147 if (l2 == NULL) in l2_packet_init()
149 l2->rx_callback = rx_callback; in l2_packet_init()
150 l2->rx_callback_ctx = rx_callback_ctx; in l2_packet_init()
153 l2->own_socket_path = os_malloc(len); in l2_packet_init()
154 if (l2->own_socket_path == NULL) { in l2_packet_init()
155 os_free(l2); in l2_packet_init()
158 os_snprintf(l2->own_socket_path, len, "%s/wpa_privsep-l2-%d-%d", in l2_packet_init()
161 l2->priv_addr.sun_family = AF_UNIX; in l2_packet_init()
162 os_snprintf(l2->priv_addr.sun_path, sizeof(l2->priv_addr.sun_path), in l2_packet_init()
165 l2->fd = socket(PF_UNIX, SOCK_DGRAM, 0); in l2_packet_init()
166 if (l2->fd < 0) { in l2_packet_init()
168 os_free(l2->own_socket_path); in l2_packet_init()
169 l2->own_socket_path = NULL; in l2_packet_init()
170 os_free(l2); in l2_packet_init()
176 os_strlcpy(addr.sun_path, l2->own_socket_path, sizeof(addr.sun_path)); in l2_packet_init()
177 if (bind(l2->fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) { in l2_packet_init()
178 wpa_printf(MSG_ERROR, "l2-pkt-privsep: bind(PF_UNIX): %s", in l2_packet_init()
185 if (wpa_priv_cmd(l2, PRIVSEP_CMD_L2_REGISTER, reg_cmd, sizeof(reg_cmd)) in l2_packet_init()
187 wpa_printf(MSG_ERROR, "L2: Failed to register with wpa_priv"); in l2_packet_init()
192 FD_SET(l2->fd, &rfds); in l2_packet_init()
195 res = select(l2->fd + 1, &rfds, NULL, NULL, &tv); in l2_packet_init()
201 if (FD_ISSET(l2->fd, &rfds)) { in l2_packet_init()
202 res = recv(l2->fd, reply, sizeof(reply), 0); in l2_packet_init()
208 wpa_printf(MSG_DEBUG, "L2: Timeout while waiting for " in l2_packet_init()
214 wpa_printf(MSG_DEBUG, "L2: Unexpected registration reply " in l2_packet_init()
217 os_memcpy(l2->own_addr, reply, ETH_ALEN); in l2_packet_init()
220 eloop_register_read_sock(l2->fd, l2_packet_receive, l2, NULL); in l2_packet_init()
222 return l2; in l2_packet_init()
225 close(l2->fd); in l2_packet_init()
226 l2->fd = -1; in l2_packet_init()
227 unlink(l2->own_socket_path); in l2_packet_init()
228 os_free(l2->own_socket_path); in l2_packet_init()
229 l2->own_socket_path = NULL; in l2_packet_init()
230 os_free(l2); in l2_packet_init()
247 void l2_packet_deinit(struct l2_packet_data *l2) in l2_packet_deinit() argument
249 if (l2 == NULL) in l2_packet_deinit()
252 if (l2->fd >= 0) { in l2_packet_deinit()
253 wpa_priv_cmd(l2, PRIVSEP_CMD_L2_UNREGISTER, NULL, 0); in l2_packet_deinit()
254 eloop_unregister_read_sock(l2->fd); in l2_packet_deinit()
255 close(l2->fd); in l2_packet_deinit()
258 if (l2->own_socket_path) { in l2_packet_deinit()
259 unlink(l2->own_socket_path); in l2_packet_deinit()
260 os_free(l2->own_socket_path); in l2_packet_deinit()
263 os_free(l2); in l2_packet_deinit()
267 int l2_packet_get_ip_addr(struct l2_packet_data *l2, char *buf, size_t len) in l2_packet_get_ip_addr() argument
274 void l2_packet_notify_auth_start(struct l2_packet_data *l2) in l2_packet_notify_auth_start() argument
276 wpa_priv_cmd(l2, PRIVSEP_CMD_L2_NOTIFY_AUTH_START, NULL, 0); in l2_packet_notify_auth_start()
280 int l2_packet_set_packet_filter(struct l2_packet_data *l2, in l2_packet_set_packet_filter() argument