Lines Matching refs:chan

115 		len = bnep_recv_control(pkt->chan, pkt->ptr, pkt->len, false);
128 pkt->dst = pkt->chan->laddr;
129 pkt->src = pkt->chan->raddr;
140 pkt->dst = pkt->chan->laddr;
155 pkt->src = pkt->chan->raddr;
175 || pkt->chan->state != CHANNEL_OPEN)
200 len = bnep_recv_control(pkt->chan, pkt->ptr + 2, size, true);
231 bnep_recv_control(channel_t *chan, uint8_t *ptr, size_t size, bool isext)
243 len = bnep_recv_control_command_not_understood(chan, ptr, size);
250 len = bnep_recv_setup_connection_req(chan, ptr, size);
257 len = bnep_recv_setup_connection_rsp(chan, ptr, size);
261 len = bnep_recv_filter_net_type_set(chan, ptr, size);
265 len = bnep_recv_filter_net_type_rsp(chan, ptr, size);
269 len = bnep_recv_filter_multi_addr_set(chan, ptr, size);
273 len = bnep_recv_filter_multi_addr_rsp(chan, ptr, size);
282 bnep_send_control(chan, BNEP_CONTROL_COMMAND_NOT_UNDERSTOOD, type);
288 bnep_recv_control_command_not_understood(channel_t *chan, uint8_t *ptr, size_t size)
299 channel_close(chan);
305 bnep_recv_setup_connection_req(channel_t *chan, uint8_t *ptr, size_t size)
318 if (chan->state != CHANNEL_WAIT_CONNECT_REQ
319 && chan->state != CHANNEL_OPEN) {
367 chan->state = CHANNEL_OPEN;
368 channel_timeout(chan, 0);
372 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
374 bnep_send_control(chan, BNEP_SETUP_CONNECTION_RESPONSE, rsp);
379 bnep_recv_setup_connection_rsp(channel_t *chan, uint8_t *ptr, size_t size)
388 if (chan->state != CHANNEL_WAIT_CONNECT_RSP) {
394 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
397 chan->state = CHANNEL_OPEN;
398 channel_timeout(chan, 0);
400 channel_close(chan);
407 bnep_recv_filter_net_type_set(channel_t *chan, uint8_t *ptr, size_t size)
422 if (chan->state != CHANNEL_OPEN) {
451 if (chan->pfilter)
452 free(chan->pfilter);
454 chan->pfilter = pf;
455 chan->npfilter = nf;
461 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
463 bnep_send_control(chan, BNEP_FILTER_NET_TYPE_RESPONSE, rsp);
468 bnep_recv_filter_net_type_rsp(channel_t *chan, uint8_t *ptr, size_t size)
475 if (chan->state != CHANNEL_OPEN) {
483 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
490 bnep_recv_filter_multi_addr_set(channel_t *chan, uint8_t *ptr, size_t size)
505 if (chan->state != CHANNEL_OPEN) {
541 if (chan->mfilter)
542 free(chan->mfilter);
544 chan->mfilter = mf;
545 chan->nmfilter = nf;
551 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
553 bnep_send_control(chan, BNEP_FILTER_MULTI_ADDR_RESPONSE, rsp);
558 bnep_recv_filter_multi_addr_rsp(channel_t *chan, uint8_t *ptr, size_t size)
565 if (chan->state != CHANNEL_OPEN) {
572 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
579 bnep_send_control(channel_t *chan, unsigned type, ...)
585 assert(chan->state != CHANNEL_CLOSED);
587 pkt = packet_alloc(chan);
627 channel_put(chan, pkt);
636 bnep_send(channel_t *chan, packet_t *pkt)
650 p = chan->sendbuf;
652 dst = (memcmp(pkt->dst, chan->raddr, ETHER_ADDR_LEN) != 0);
653 src = (memcmp(pkt->src, chan->laddr, ETHER_ADDR_LEN) != 0);
682 if (p + eh->len > chan->sendbuf + chan->mtu)
694 iov[0].iov_base = chan->sendbuf;
695 iov[0].iov_len = (p - chan->sendbuf);
697 if ((chan->npfilter == 0 || bnep_pfilter(chan, pkt))
698 && (chan->nmfilter == 0 || bnep_mfilter(chan, pkt))) {
712 if (iov[0].iov_len + iov[1].iov_len > chan->mtu) {
717 nw = writev(chan->fd, iov, __arraycount(iov));
722 bnep_pfilter(channel_t *chan, packet_t *pkt)
734 for (i = 0; i < chan->npfilter; i++) {
735 if (chan->pfilter[i].start <= proto
736 && chan->pfilter[i].end >=proto)
744 bnep_mfilter(channel_t *chan, packet_t *pkt)
751 for (i = 0; i < chan->nmfilter; i++) {
752 if (memcmp(pkt->dst, chan->mfilter[i].start, ETHER_ADDR_LEN) >= 0
753 && memcmp(pkt->dst, chan->mfilter[i].end, ETHER_ADDR_LEN) <= 0)