Deleted Added
full compact
34c34
< * $FreeBSD: head/sys/netinet/if_ether.c 111119 2003-02-19 05:47:46Z imp $
---
> * $FreeBSD: head/sys/netinet/if_ether.c 111888 2003-03-04 23:19:55Z jlemon $
107c107
< struct ifqueue arpintrq;
---
> static struct ifqueue arpintrq;
125c125
< static void arpintr(void);
---
> static void arpintr(struct mbuf *);
500c500
< arpintr()
---
> arpintr(struct mbuf *m)
502,504c502
< register struct mbuf *m;
< register struct arphdr *ar;
< int s;
---
> struct arphdr *ar;
510,522c508,513
< while (arpintrq.ifq_head) {
< s = splimp();
< IF_DEQUEUE(&arpintrq, m);
< splx(s);
< if (m == 0 || (m->m_flags & M_PKTHDR) == 0)
< panic("arpintr");
<
< if (m->m_len < sizeof(struct arphdr) &&
< ((m = m_pullup(m, sizeof(struct arphdr))) == NULL)) {
< log(LOG_ERR, "arp: runt packet -- m_pullup failed\n");
< continue;
< }
< ar = mtod(m, struct arphdr *);
---
> if (m->m_len < sizeof(struct arphdr) &&
> ((m = m_pullup(m, sizeof(struct arphdr))) == NULL)) {
> log(LOG_ERR, "arp: runt packet -- m_pullup failed\n");
> return;
> }
> ar = mtod(m, struct arphdr *);
524,532c515,522
< if (ntohs(ar->ar_hrd) != ARPHRD_ETHER
< && ntohs(ar->ar_hrd) != ARPHRD_IEEE802
< && ntohs(ar->ar_hrd) != ARPHRD_ARCNET) {
< log(LOG_ERR,
< "arp: unknown hardware address format (0x%2D)\n",
< (unsigned char *)&ar->ar_hrd, "");
< m_freem(m);
< continue;
< }
---
> if (ntohs(ar->ar_hrd) != ARPHRD_ETHER &&
> ntohs(ar->ar_hrd) != ARPHRD_IEEE802 &&
> ntohs(ar->ar_hrd) != ARPHRD_ARCNET) {
> log(LOG_ERR, "arp: unknown hardware address format (0x%2D)\n",
> (unsigned char *)&ar->ar_hrd, "");
> m_freem(m);
> return;
> }
534,539c524,529
< if (m->m_pkthdr.len < arphdr_len(ar) &&
< (m = m_pullup(m, arphdr_len(ar))) == NULL) {
< log(LOG_ERR, "arp: runt packet\n");
< m_freem(m);
< continue;
< }
---
> if (m->m_pkthdr.len < arphdr_len(ar) &&
> (m = m_pullup(m, arphdr_len(ar))) == NULL) {
> log(LOG_ERR, "arp: runt packet\n");
> m_freem(m);
> return;
> }
541c531
< switch (ntohs(ar->ar_pro)) {
---
> switch (ntohs(ar->ar_pro)) {
543,545c533,535
< case ETHERTYPE_IP:
< in_arpinput(m);
< continue;
---
> case ETHERTYPE_IP:
> in_arpinput(m);
> return;
547,548d536
< }
< m_freem(m);
549a538
> m_freem(m);
961c950
< register_netisr(NETISR_ARP, arpintr);
---
> netisr_register(NETISR_ARP, arpintr, &arpintrq);