diff options
author | Joerg Goltermann <gollo@cvs.openbsd.org> | 2008-10-30 09:39:06 +0000 |
---|---|---|
committer | Joerg Goltermann <gollo@cvs.openbsd.org> | 2008-10-30 09:39:06 +0000 |
commit | 99b87a40d0343dabec1b05984030c74834c3744b (patch) | |
tree | b0835214489815565738e723f41c02af338cf07a /sys/netinet/if_ether.h | |
parent | 84594f3285e1a497466c5c9dad532f790e88daa1 (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.h | 8 |
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; |