summaryrefslogtreecommitdiff
path: root/sys/netinet/if_ether.h
diff options
context:
space:
mode:
authorJoerg Goltermann <gollo@cvs.openbsd.org>2008-10-30 09:39:06 +0000
committerJoerg Goltermann <gollo@cvs.openbsd.org>2008-10-30 09:39:06 +0000
commit99b87a40d0343dabec1b05984030c74834c3744b (patch)
treeb0835214489815565738e723f41c02af338cf07a /sys/netinet/if_ether.h
parent84594f3285e1a497466c5c9dad532f790e88daa1 (diff)
Arpresolve could loose few packets during resolving an ethernet
address. This cvs commit introduces a queue that buffers a small burst of packets and resending the packets in correct order when the ethernet address is resolved. Code written by Armin Wolfermann <aw@osn.de>. OK: claudio@ henning@
Diffstat (limited to 'sys/netinet/if_ether.h')
-rw-r--r--sys/netinet/if_ether.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/netinet/if_ether.h b/sys/netinet/if_ether.h
index ee9eb29ae27..245e927f37d 100644
--- a/sys/netinet/if_ether.h
+++ b/sys/netinet/if_ether.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ether.h,v 1.41 2008/10/16 18:23:53 claudio Exp $ */
+/* $OpenBSD: if_ether.h,v 1.42 2008/10/30 09:39:05 gollo Exp $ */
/* $NetBSD: if_ether.h,v 1.22 1996/05/11 13:00:00 mycroft Exp $ */
/*
@@ -162,10 +162,14 @@ struct arpcom {
struct llinfo_arp {
LIST_ENTRY(llinfo_arp) la_list;
struct rtentry *la_rt;
- struct mbuf *la_hold; /* last packet until resolved/timeout */
+ struct mbuf *la_hold_head; /* packet hold queue */
+ struct mbuf *la_hold_tail;
+ int la_hold_count; /* number of packets queued */
long la_asked; /* last time we QUERIED for this addr */
#define la_timer la_rt->rt_rmx.rmx_expire /* deletion time in seconds */
};
+#define MAX_HOLD_QUEUE 10
+#define MAX_HOLD_TOTAL NMBCLUSTERS / 10
struct sockaddr_inarp {
u_int8_t sin_len;