summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/include/recvbuff.h
diff options
context:
space:
mode:
authorroberto <roberto@FreeBSD.org>2008-08-22 15:58:00 +0000
committerroberto <roberto@FreeBSD.org>2008-08-22 15:58:00 +0000
commitb85c7169a740b2edf0106ad59fdaa1b0160f823c (patch)
tree2b9fb7f64eacb322e95695e412c923e97ba33e88 /contrib/ntp/include/recvbuff.h
parent1d197cfe9feac6bc29537d8e53c30b6435937b95 (diff)
parent7a6072eb585696f8856cd498c3fd194cf49f14c6 (diff)
downloadFreeBSD-src-b85c7169a740b2edf0106ad59fdaa1b0160f823c.zip
FreeBSD-src-b85c7169a740b2edf0106ad59fdaa1b0160f823c.tar.gz
Merge ntpd & friends 4.2.4p5 from vendor/ntp/dist into head. Next commit
will update usr.sbin/ntp to match this. MFC after: 2 weeks
Diffstat (limited to 'contrib/ntp/include/recvbuff.h')
-rw-r--r--contrib/ntp/include/recvbuff.h24
1 files changed, 17 insertions, 7 deletions
diff --git a/contrib/ntp/include/recvbuff.h b/contrib/ntp/include/recvbuff.h
index 4fde7f1..771b90b 100644
--- a/contrib/ntp/include/recvbuff.h
+++ b/contrib/ntp/include/recvbuff.h
@@ -9,6 +9,9 @@
#include "ntp_fp.h"
#include "ntp_types.h"
+#include <isc/list.h>
+#include <isc/result.h>
+
/*
* recvbuf memory management
*/
@@ -45,8 +48,11 @@ extern HANDLE get_recv_buff_event P((void));
*/
#define RX_BUFF_SIZE 1000 /* hail Mary */
+
+typedef struct recvbuf recvbuf_t;
+
struct recvbuf {
- struct recvbuf *next; /* next buffer in chain */
+ ISC_LINK(recvbuf_t) link;
union {
struct sockaddr_storage X_recv_srcadr;
caddr_t X_recv_srcclock;
@@ -56,14 +62,14 @@ struct recvbuf {
#define recv_srcclock X_from_where.X_recv_srcclock
#define recv_peer X_from_where.X_recv_peer
#if defined HAVE_IO_COMPLETION_PORT
- IoCompletionInfo iocompletioninfo;
WSABUF wsabuff;
- DWORD AddressLength;
#else
struct sockaddr_storage srcadr; /* where packet came from */
#endif
+ int src_addr_len; /* source address length */
struct interface *dstadr; /* interface datagram arrived thru */
SOCKET fd; /* fd on which it was received */
+ int msg_flags; /* Flags received about the packet */
l_fp recv_time; /* time of arrival */
void (*receiver) P((struct recvbuf *)); /* routine to receive buffer */
int recv_length; /* number of octets received */
@@ -71,6 +77,7 @@ struct recvbuf {
struct pkt X_recv_pkt;
u_char X_recv_buffer[RX_BUFF_SIZE];
} recv_space;
+ int used;
#define recv_pkt recv_space.X_recv_pkt
#define recv_buffer recv_space.X_recv_buffer
};
@@ -81,16 +88,14 @@ extern void init_recvbuff P((int));
*/
extern void freerecvbuf P((struct recvbuf *));
-
-extern struct recvbuf * getrecvbufs P((void));
-
/* Get a free buffer (typically used so an async
* read can directly place data into the buffer
*
* The buffer is removed from the free list. Make sure
* you put it back with freerecvbuf() or
*/
-extern struct recvbuf *get_free_recv_buffer P((void));
+extern struct recvbuf *get_free_recv_buffer P((void)); /* signal safe - no malloc */
+extern struct recvbuf *get_free_recv_buffer_alloc P((void)); /* signal unsafe - may malloc */
/* Add a buffer to the full list
*/
@@ -109,5 +114,10 @@ extern u_long lowater_additions P((void));
*/
extern struct recvbuf *get_full_recv_buffer P((void));
+/*
+ * Checks to see if there are buffers to process
+ */
+extern isc_boolean_t has_full_recv_buffer P((void));
+
#endif /* defined __recvbuff_h */
OpenPOWER on IntegriCloud