static int clip_arp_rcv(struct sk_buff *skb) { struct atm_vcc *vcc; DPRINTK("clip_arp_rcv\n"); vcc = ATM_SKB(skb)->vcc; if (!vcc) goto Exit; incoming_arp(CLIP_VCC(vcc), (struct atmarphdr *)skb->data, skb->len); Exit: dev_kfree_skb_any(skb); return 0; }
static void recv_vcc(VCC *vcc) { unsigned char buffer[MAX_BUFFER]; int size; size = read(vcc->fd,buffer,MAX_BUFFER); if (!size) { disconnect_vcc(vcc); return; } if (size < 0) { diag(COMPONENT,DIAG_ERROR,"read vcc: %s",strerror(errno)); disconnect_vcc(vcc); return; } if (debug) { int i; for (i = 0; i < size; i++) printf("%02X ",buffer[i]); printf("\n"); } incoming_arp(vcc,(struct atmarphdr *) buffer,size); }