⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recvbuff.h

📁 网络时间协议NTP 源码 版本v4.2.0b 该源码用于linux平台下
💻 H
字号:
#if !defined __recvbuff_h#define __recvbuff_h#ifdef HAVE_CONFIG_H# include <config.h>#endif#include "ntp.h"#include "ntp_fp.h"#include "ntp_types.h"/* * recvbuf memory management */#define RECV_INIT	10	/* 10 buffers initially */#define RECV_LOWAT	3	/* when we're down to three buffers get more */#define RECV_INC	5	/* get 5 more at a time */#define RECV_TOOMANY	40	/* this is way too many buffers */#if defined HAVE_IO_COMPLETION_PORT# include "ntp_iocompletionport.h"#include "ntp_timer.h"# define RECV_BLOCK_IO()	EnterCriticalSection(&RecvCritSection)# define RECV_UNBLOCK_IO()	LeaveCriticalSection(&RecvCritSection)/*  Return the event which is set when items are added to the full list */extern HANDLE	get_recv_buff_event P((void));#else# define RECV_BLOCK_IO()	# define RECV_UNBLOCK_IO()	#endif/* * Format of a recvbuf.  These are used by the asynchronous receive * routine to store incoming packets and related information. *//* *  the maximum length NTP packet contains the NTP header, one Autokey *  request, one Autokey response and the MAC. Assuming certificates don't *  get too big, the maximum packet length is set arbitrarily at 1000. */   #define	RX_BUFF_SIZE	1000		/* hail Mary */struct recvbuf {	struct recvbuf *next;		/* next buffer in chain */	union {		struct sockaddr_storage X_recv_srcadr;		caddr_t X_recv_srcclock;		struct peer *X_recv_peer;	} X_from_where;#define recv_srcadr	X_from_where.X_recv_srcadr#define	recv_srcclock	X_from_where.X_recv_srcclock#define recv_peer	X_from_where.X_recv_peer#if defined HAVE_IO_COMPLETION_PORT	WSABUF		wsabuff;#else	struct sockaddr_storage srcadr;	/* where packet came from */#endif	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 */	union {		struct pkt X_recv_pkt;		u_char X_recv_buffer[RX_BUFF_SIZE];	} recv_space;#define	recv_pkt	recv_space.X_recv_pkt#define	recv_buffer	recv_space.X_recv_buffer};extern	void	init_recvbuff	P((int));/* freerecvbuf - make a single recvbuf available for reuse */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));/*   Add a buffer to the full list */extern	void	add_full_recv_buffer	 P((struct recvbuf *));/*extern	void	process_recv_buffers	 P((void)); *//* number of recvbufs on freelist */extern u_long free_recvbuffs P((void));		extern u_long full_recvbuffs P((void));		extern u_long total_recvbuffs P((void));extern u_long lowater_additions P((void));		/*  Returns the next buffer in the full list. * */extern	struct recvbuf *get_full_recv_buffer P((void));#endif /* defined __recvbuff_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -