Lines Matching refs:chan

112 		len = bnep_recv_control(pkt->chan, pkt->ptr, pkt->len, false);
125 pkt->dst = pkt->chan->laddr;
126 pkt->src = pkt->chan->raddr;
137 pkt->dst = pkt->chan->laddr;
152 pkt->src = pkt->chan->raddr;
172 || pkt->chan->state != CHANNEL_OPEN)
197 len = bnep_recv_control(pkt->chan, pkt->ptr + 2, size, true);
228 bnep_recv_control(channel_t *chan, uint8_t *ptr, size_t size, bool isext)
240 len = bnep_recv_control_command_not_understood(chan, ptr, size);
247 len = bnep_recv_setup_connection_req(chan, ptr, size);
254 len = bnep_recv_setup_connection_rsp(chan, ptr, size);
258 len = bnep_recv_filter_net_type_set(chan, ptr, size);
262 len = bnep_recv_filter_net_type_rsp(chan, ptr, size);
266 len = bnep_recv_filter_multi_addr_set(chan, ptr, size);
270 len = bnep_recv_filter_multi_addr_rsp(chan, ptr, size);
279 bnep_send_control(chan, BNEP_CONTROL_COMMAND_NOT_UNDERSTOOD, type);
285 bnep_recv_control_command_not_understood(channel_t *chan, uint8_t *ptr, size_t size)
296 channel_close(chan);
302 bnep_recv_setup_connection_req(channel_t *chan, uint8_t *ptr, size_t size)
315 if (chan->state != CHANNEL_WAIT_CONNECT_REQ
316 && chan->state != CHANNEL_OPEN) {
364 chan->state = CHANNEL_OPEN;
365 channel_timeout(chan, 0);
369 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
371 bnep_send_control(chan, BNEP_SETUP_CONNECTION_RESPONSE, rsp);
376 bnep_recv_setup_connection_rsp(channel_t *chan, uint8_t *ptr, size_t size)
385 if (chan->state != CHANNEL_WAIT_CONNECT_RSP) {
391 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
394 chan->state = CHANNEL_OPEN;
395 channel_timeout(chan, 0);
397 channel_close(chan);
404 bnep_recv_filter_net_type_set(channel_t *chan, uint8_t *ptr, size_t size)
419 if (chan->state != CHANNEL_OPEN) {
448 if (chan->pfilter)
449 free(chan->pfilter);
451 chan->pfilter = pf;
452 chan->npfilter = nf;
458 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
460 bnep_send_control(chan, BNEP_FILTER_NET_TYPE_RESPONSE, rsp);
465 bnep_recv_filter_net_type_rsp(channel_t *chan, uint8_t *ptr, size_t size)
472 if (chan->state != CHANNEL_OPEN) {
480 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
487 bnep_recv_filter_multi_addr_set(channel_t *chan, uint8_t *ptr, size_t size)
502 if (chan->state != CHANNEL_OPEN) {
538 if (chan->mfilter)
539 free(chan->mfilter);
541 chan->mfilter = mf;
542 chan->nmfilter = nf;
548 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
550 bnep_send_control(chan, BNEP_FILTER_MULTI_ADDR_RESPONSE, rsp);
555 bnep_recv_filter_multi_addr_rsp(channel_t *chan, uint8_t *ptr, size_t size)
562 if (chan->state != CHANNEL_OPEN) {
569 ether_ntoa((struct ether_addr *)chan->raddr), rsp);
576 bnep_send_control(channel_t *chan, uint8_t type, ...)
582 assert(chan->state != CHANNEL_CLOSED);
584 pkt = packet_alloc(chan);
624 channel_put(chan, pkt);
633 bnep_send(channel_t *chan, packet_t *pkt)
647 p = chan->sendbuf;
649 dst = (memcmp(pkt->dst, chan->raddr, ETHER_ADDR_LEN) != 0);
650 src = (memcmp(pkt->src, chan->laddr, ETHER_ADDR_LEN) != 0);
679 if (p + eh->len > chan->sendbuf + chan->mtu)
691 iov[0].iov_base = chan->sendbuf;
692 iov[0].iov_len = (p - chan->sendbuf);
694 if ((chan->npfilter == 0 || bnep_pfilter(chan, pkt))
695 && (chan->nmfilter == 0 || bnep_mfilter(chan, pkt))) {
709 if (iov[0].iov_len + iov[1].iov_len > chan->mtu) {
714 nw = writev(chan->fd, iov, __arraycount(iov));
719 bnep_pfilter(channel_t *chan, packet_t *pkt)
731 for (i = 0; i < chan->npfilter; i++) {
732 if (chan->pfilter[i].start <= proto
733 && chan->pfilter[i].end >=proto)
741 bnep_mfilter(channel_t *chan, packet_t *pkt)
748 for (i = 0; i < chan->nmfilter; i++) {
749 if (memcmp(pkt->dst, chan->mfilter[i].start, ETHER_ADDR_LEN) >= 0
750 && memcmp(pkt->dst, chan->mfilter[i].end, ETHER_ADDR_LEN) <= 0)