Lines Matching refs:chan
114 len = bnep_recv_control(pkt->chan, pkt->ptr, pkt->len, false); in bnep_recv()
127 pkt->dst = pkt->chan->laddr; in bnep_recv()
128 pkt->src = pkt->chan->raddr; in bnep_recv()
139 pkt->dst = pkt->chan->laddr; in bnep_recv()
154 pkt->src = pkt->chan->raddr; in bnep_recv()
174 || pkt->chan->state != CHANNEL_OPEN) in bnep_recv()
199 len = bnep_recv_control(pkt->chan, pkt->ptr + 2, size, true); in bnep_recv_extension()
230 bnep_recv_control(channel_t *chan, uint8_t *ptr, size_t size, bool isext) in bnep_recv_control() argument
242 len = bnep_recv_control_command_not_understood(chan, ptr, size); in bnep_recv_control()
249 len = bnep_recv_setup_connection_req(chan, ptr, size); in bnep_recv_control()
256 len = bnep_recv_setup_connection_rsp(chan, ptr, size); in bnep_recv_control()
260 len = bnep_recv_filter_net_type_set(chan, ptr, size); in bnep_recv_control()
264 len = bnep_recv_filter_net_type_rsp(chan, ptr, size); in bnep_recv_control()
268 len = bnep_recv_filter_multi_addr_set(chan, ptr, size); in bnep_recv_control()
272 len = bnep_recv_filter_multi_addr_rsp(chan, ptr, size); in bnep_recv_control()
281 bnep_send_control(chan, BNEP_CONTROL_COMMAND_NOT_UNDERSTOOD, type); in bnep_recv_control()
287 bnep_recv_control_command_not_understood(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_control_command_not_understood() argument
298 channel_close(chan); in bnep_recv_control_command_not_understood()
304 bnep_recv_setup_connection_req(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_setup_connection_req() argument
317 if (chan->state != CHANNEL_WAIT_CONNECT_REQ in bnep_recv_setup_connection_req()
318 && chan->state != CHANNEL_OPEN) { in bnep_recv_setup_connection_req()
366 chan->state = CHANNEL_OPEN; in bnep_recv_setup_connection_req()
367 channel_timeout(chan, 0); in bnep_recv_setup_connection_req()
371 ether_ntoa((struct ether_addr *)chan->raddr), rsp); in bnep_recv_setup_connection_req()
373 bnep_send_control(chan, BNEP_SETUP_CONNECTION_RESPONSE, rsp); in bnep_recv_setup_connection_req()
378 bnep_recv_setup_connection_rsp(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_setup_connection_rsp() argument
387 if (chan->state != CHANNEL_WAIT_CONNECT_RSP) { in bnep_recv_setup_connection_rsp()
393 ether_ntoa((struct ether_addr *)chan->raddr), rsp); in bnep_recv_setup_connection_rsp()
396 chan->state = CHANNEL_OPEN; in bnep_recv_setup_connection_rsp()
397 channel_timeout(chan, 0); in bnep_recv_setup_connection_rsp()
399 channel_close(chan); in bnep_recv_setup_connection_rsp()
406 bnep_recv_filter_net_type_set(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_filter_net_type_set() argument
421 if (chan->state != CHANNEL_OPEN) { in bnep_recv_filter_net_type_set()
450 if (chan->pfilter) in bnep_recv_filter_net_type_set()
451 free(chan->pfilter); in bnep_recv_filter_net_type_set()
453 chan->pfilter = pf; in bnep_recv_filter_net_type_set()
454 chan->npfilter = nf; in bnep_recv_filter_net_type_set()
460 ether_ntoa((struct ether_addr *)chan->raddr), rsp); in bnep_recv_filter_net_type_set()
462 bnep_send_control(chan, BNEP_FILTER_NET_TYPE_RESPONSE, rsp); in bnep_recv_filter_net_type_set()
467 bnep_recv_filter_net_type_rsp(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_filter_net_type_rsp() argument
474 if (chan->state != CHANNEL_OPEN) { in bnep_recv_filter_net_type_rsp()
482 ether_ntoa((struct ether_addr *)chan->raddr), rsp); in bnep_recv_filter_net_type_rsp()
489 bnep_recv_filter_multi_addr_set(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_filter_multi_addr_set() argument
504 if (chan->state != CHANNEL_OPEN) { in bnep_recv_filter_multi_addr_set()
540 if (chan->mfilter) in bnep_recv_filter_multi_addr_set()
541 free(chan->mfilter); in bnep_recv_filter_multi_addr_set()
543 chan->mfilter = mf; in bnep_recv_filter_multi_addr_set()
544 chan->nmfilter = nf; in bnep_recv_filter_multi_addr_set()
550 ether_ntoa((struct ether_addr *)chan->raddr), rsp); in bnep_recv_filter_multi_addr_set()
552 bnep_send_control(chan, BNEP_FILTER_MULTI_ADDR_RESPONSE, rsp); in bnep_recv_filter_multi_addr_set()
557 bnep_recv_filter_multi_addr_rsp(channel_t *chan, uint8_t *ptr, size_t size) in bnep_recv_filter_multi_addr_rsp() argument
564 if (chan->state != CHANNEL_OPEN) { in bnep_recv_filter_multi_addr_rsp()
571 ether_ntoa((struct ether_addr *)chan->raddr), rsp); in bnep_recv_filter_multi_addr_rsp()
578 bnep_send_control(channel_t *chan, unsigned type, ...) in bnep_send_control() argument
584 assert(chan->state != CHANNEL_CLOSED); in bnep_send_control()
586 pkt = packet_alloc(chan); in bnep_send_control()
626 channel_put(chan, pkt); in bnep_send_control()
635 bnep_send(channel_t *chan, packet_t *pkt) in bnep_send() argument
649 p = chan->sendbuf; in bnep_send()
651 dst = (memcmp(pkt->dst, chan->raddr, ETHER_ADDR_LEN) != 0); in bnep_send()
652 src = (memcmp(pkt->src, chan->laddr, ETHER_ADDR_LEN) != 0); in bnep_send()
681 if (p + eh->len > chan->sendbuf + chan->mtu) in bnep_send()
693 iov[0].iov_base = chan->sendbuf; in bnep_send()
694 iov[0].iov_len = (p - chan->sendbuf); in bnep_send()
696 if ((chan->npfilter == 0 || bnep_pfilter(chan, pkt)) in bnep_send()
697 && (chan->nmfilter == 0 || bnep_mfilter(chan, pkt))) { in bnep_send()
711 if (iov[0].iov_len + iov[1].iov_len > chan->mtu) { in bnep_send()
716 nw = writev(chan->fd, iov, __arraycount(iov)); in bnep_send()
721 bnep_pfilter(channel_t *chan, packet_t *pkt) in bnep_pfilter() argument
733 for (i = 0; i < chan->npfilter; i++) { in bnep_pfilter()
734 if (chan->pfilter[i].start <= proto in bnep_pfilter()
735 && chan->pfilter[i].end >=proto) in bnep_pfilter()
743 bnep_mfilter(channel_t *chan, packet_t *pkt) in bnep_mfilter() argument
750 for (i = 0; i < chan->nmfilter; i++) { in bnep_mfilter()
751 if (memcmp(pkt->dst, chan->mfilter[i].start, ETHER_ADDR_LEN) >= 0 in bnep_mfilter()
752 && memcmp(pkt->dst, chan->mfilter[i].end, ETHER_ADDR_LEN) <= 0) in bnep_mfilter()