Lines Matching refs:handle

144 can_activate(pcap_t* handle)
146 struct pcap_can *handlep = handle->priv;
151 handle->bufsize = 24;
152 handle->offset = 8;
153 handle->linktype = DLT_CAN_SOCKETCAN;
154 handle->read_op = can_read_linux;
155 handle->inject_op = can_inject_linux;
156 handle->setfilter_op = can_setfilter_linux;
157 handle->setdirection_op = can_setdirection_linux;
158 handle->set_datalink_op = NULL;
159 handle->getnonblock_op = pcap_getnonblock_fd;
160 handle->setnonblock_op = pcap_setnonblock_fd;
161 handle->stats_op = can_stats_linux;
164 handle->fd = socket(PF_CAN, SOCK_RAW, CAN_RAW);
165 if (handle->fd < 0)
167 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't create raw socket %d:%s",
174 strncpy(ifr.ifr_name, handle->opt.source, sizeof(ifr.ifr_name));
175 if (ioctl(handle->fd, SIOCGIFINDEX, &ifr) < 0)
177 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
180 pcap_cleanup_live_common(handle);
186 handle->buffer = malloc(handle->bufsize);
187 if (!handle->buffer)
189 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't allocate dump buffer: %s",
191 pcap_cleanup_live_common(handle);
198 if( bind( handle->fd, (struct sockaddr*)&addr, sizeof(addr) ) < 0 )
200 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't attach to device %d %d:%s",
202 pcap_cleanup_live_common(handle);
206 if (handle->opt.rfmon)
209 pcap_cleanup_live_common(handle);
213 handle->selectable_fd = handle->fd;
220 can_read_linux(pcap_t *handle, int max_packets, pcap_handler callback, u_char *user)
227 iv.iov_base = &handle->buffer[handle->offset];
228 iv.iov_len = handle->snapshot;
233 msg.msg_control = handle->buffer;
234 msg.msg_controllen = handle->offset;
238 pkth.caplen = recvmsg(handle->fd, &msg, 0);
239 if (handle->break_loop)
241 handle->break_loop = 0;
248 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't receive packet %d:%s",
254 cf = (struct can_frame*)&handle->buffer[8];
262 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't get time of day %d:%s",
267 callback(user, &pkth, &handle->buffer[8]);
274 can_inject_linux(pcap_t *handle, const void *buf, size_t size)
277 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "inject not supported on "
284 can_stats_linux(pcap_t *handle, struct pcap_stat *stats)