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

📄 alloc.c

📁 DHCP服务器源码
💻 C
📖 第 1 页 / 共 2 页
字号:
			(struct option_cache *)(rval -> expression);		dmalloc_reuse (rval, file, line, 0);	} else {		rval = dmalloc (sizeof (struct option_cache), file, line);		if (!rval)			return 0;	}	memset (rval, 0, sizeof *rval);	return option_cache_reference (cptr, rval, file, line);}int option_cache_reference (ptr, src, file, line)	struct option_cache **ptr;	struct option_cache *src;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct option_cache *)0;#endif	}	*ptr = src;	src -> refcnt++;	rc_register (file, line, ptr, src, src -> refcnt, 0, RC_MISC);	return 1;}int buffer_allocate (ptr, len, file, line)	struct buffer **ptr;	unsigned len;	const char *file;	int line;{	struct buffer *bp;	bp = dmalloc (len + sizeof *bp, file, line);	if (!bp)		return 0;	memset (bp, 0, sizeof *bp);	bp -> refcnt = 0;	return buffer_reference (ptr, bp, file, line);}int buffer_reference (ptr, bp, file, line)	struct buffer **ptr;	struct buffer *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct buffer *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}int buffer_dereference (ptr, file, line)	struct buffer **ptr;	const char *file;	int line;{	struct buffer *bp;	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (!*ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	(*ptr) -> refcnt--;	rc_register (file, line, ptr, *ptr, (*ptr) -> refcnt, 1, RC_MISC);	if (!(*ptr) -> refcnt) {		dfree ((*ptr), file, line);	} else if ((*ptr) -> refcnt < 0) {		log_error ("%s(%d): negative refcnt!", file, line);#if defined (DEBUG_RC_HISTORY)		dump_rc_history (*ptr);#endif#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	*ptr = (struct buffer *)0;	return 1;}int dns_host_entry_allocate (ptr, hostname, file, line)	struct dns_host_entry **ptr;	const char *hostname;	const char *file;	int line;{	struct dns_host_entry *bp;	bp = dmalloc (strlen (hostname) + sizeof *bp, file, line);	if (!bp)		return 0;	memset (bp, 0, sizeof *bp);	bp -> refcnt = 0;	strcpy (bp -> hostname, hostname);	return dns_host_entry_reference (ptr, bp, file, line);}int dns_host_entry_reference (ptr, bp, file, line)	struct dns_host_entry **ptr;	struct dns_host_entry *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct dns_host_entry *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}int dns_host_entry_dereference (ptr, file, line)	struct dns_host_entry **ptr;	const char *file;	int line;{	struct dns_host_entry *bp;	if (!ptr || !*ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	(*ptr) -> refcnt--;	rc_register (file, line, ptr, *ptr, (*ptr) -> refcnt, 1, RC_MISC);	if (!(*ptr) -> refcnt)		dfree ((*ptr), file, line);	if ((*ptr) -> refcnt < 0) {		log_error ("%s(%d): negative refcnt!", file, line);#if defined (DEBUG_RC_HISTORY)		dump_rc_history (*ptr);#endif#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	*ptr = (struct dns_host_entry *)0;	return 1;}int option_state_allocate (ptr, file, line)	struct option_state **ptr;	const char *file;	int line;{	unsigned size;	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct option_state *)0;#endif	}	size = sizeof **ptr + (universe_count - 1) * sizeof (VOIDPTR);	*ptr = dmalloc (size, file, line);	if (*ptr) {		memset (*ptr, 0, size);		(*ptr) -> universe_count = universe_count;		(*ptr) -> refcnt = 1;		rc_register (file, line,			     ptr, *ptr, (*ptr) -> refcnt, 0, RC_MISC);		return 1;	}	return 0;}int option_state_reference (ptr, bp, file, line)	struct option_state **ptr;	struct option_state *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct option_state *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}int option_state_dereference (ptr, file, line)	struct option_state **ptr;	const char *file;	int line;{	int i;	struct option_state *options;	if (!ptr || !*ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	options = *ptr;	*ptr = (struct option_state *)0;	--options -> refcnt;	rc_register (file, line, ptr, options, options -> refcnt, 1, RC_MISC);	if (options -> refcnt > 0)		return 1;	if (options -> refcnt < 0) {		log_error ("%s(%d): negative refcnt!", file, line);#if defined (DEBUG_RC_HISTORY)		dump_rc_history (options);#endif#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	/* Loop through the per-universe state. */	for (i = 0; i < options -> universe_count; i++)		if (options -> universes [i] &&		    universes [i] -> option_state_dereference)			((*(universes [i] -> option_state_dereference))			 (universes [i], options, file, line));	dfree (options, file, line);	return 1;}int executable_statement_allocate (ptr, file, line)	struct executable_statement **ptr;	const char *file;	int line;{	struct executable_statement *bp;	bp = dmalloc (sizeof *bp, file, line);	if (!bp)		return 0;	memset (bp, 0, sizeof *bp);	return executable_statement_reference (ptr, bp, file, line);}int executable_statement_reference (ptr, bp, file, line)	struct executable_statement **ptr;	struct executable_statement *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct executable_statement *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}static struct packet *free_packets;#if defined (DEBUG_MEMORY_LEAKAGE) || \		defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)void relinquish_free_packets (){	struct packet *p, *n;	for (p = free_packets; p; p = n) {		n = (struct packet *)(p -> raw);		dfree (p, MDL);	}	free_packets = (struct packet *)0;}#endifint packet_allocate (ptr, file, line)	struct packet **ptr;	const char *file;	int line;{	int size;	struct packet *p;	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct packet *)0;#endif	}	if (free_packets) {		p = free_packets;		free_packets = (struct packet *)(p -> raw);		dmalloc_reuse (p, file, line, 1);	} else {		p = dmalloc (sizeof *p, file, line);	}	if (p) {		memset (p, 0, sizeof *p);		return packet_reference (ptr, p, file, line);	}	return 0;}int packet_reference (ptr, bp, file, line)	struct packet **ptr;	struct packet *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct packet *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}int packet_dereference (ptr, file, line)	struct packet **ptr;	const char *file;	int line;{	int i;	struct packet *packet;	if (!ptr || !*ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	packet = *ptr;	*ptr = (struct packet *)0;	--packet -> refcnt;	rc_register (file, line, ptr, packet, packet -> refcnt, 1, RC_MISC);	if (packet -> refcnt > 0)		return 1;	if (packet -> refcnt < 0) {		log_error ("%s(%d): negative refcnt!", file, line);#if defined (DEBUG_RC_HISTORY)		dump_rc_history (packet);#endif#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (packet -> options)		option_state_dereference (&packet -> options, file, line);	if (packet -> interface)		interface_dereference (&packet -> interface, MDL);	if (packet -> shared_network)		shared_network_dereference (&packet -> shared_network, MDL);	for (i = 0; i < packet -> class_count && i < PACKET_MAX_CLASSES; i++) {		if (packet -> classes [i])			omapi_object_dereference ((omapi_object_t **)						  &packet -> classes [i], MDL);	}	packet -> raw = (struct dhcp_packet *)free_packets;	free_packets = packet;	dmalloc_reuse (free_packets, (char *)0, 0, 0);	return 1;}int dns_zone_allocate (ptr, file, line)	struct dns_zone **ptr;	const char *file;	int line;{	int size;	struct dns_zone *d;	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct dns_zone *)0;#endif	}	d = dmalloc (sizeof *d, file, line);	if (d) {		memset (d, 0, sizeof *d);		return dns_zone_reference (ptr, d, file, line);	}	return 0;}int dns_zone_reference (ptr, bp, file, line)	struct dns_zone **ptr;	struct dns_zone *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct dns_zone *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}int binding_scope_allocate (ptr, file, line)	struct binding_scope **ptr;	const char *file;	int line;{	struct binding_scope *bp;	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	bp = dmalloc (sizeof *bp, file, line);	if (!bp)		return 0;	memset (bp, 0, sizeof *bp);	binding_scope_reference (ptr, bp, file, line);	return 1;}int binding_scope_reference (ptr, bp, file, line)	struct binding_scope **ptr;	struct binding_scope *bp;	const char *file;	int line;{	if (!ptr) {		log_error ("%s(%d): null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		return 0;#endif	}	if (*ptr) {		log_error ("%s(%d): non-null pointer", file, line);#if defined (POINTER_DEBUG)		abort ();#else		*ptr = (struct binding_scope *)0;#endif	}	*ptr = bp;	bp -> refcnt++;	rc_register (file, line, ptr, bp, bp -> refcnt, 0, RC_MISC);	return 1;}/* Make a copy of the data in data_string, upping the buffer reference   count if there's a buffer. */void data_string_copy (dest, src, file, line)	struct data_string *dest;	struct data_string *src;	const char *file;	int line;{	if (src -> buffer)		buffer_reference (&dest -> buffer, src -> buffer, file, line);	dest -> data = src -> data;	dest -> terminated = src -> terminated;	dest -> len = src -> len;}/* Release the reference count to a data string's buffer (if any) and   zero out the other information, yielding the null data string. */void data_string_forget (data, file, line)	struct data_string *data;	const char *file;	int line;{	if (data -> buffer)		buffer_dereference (&data -> buffer, file, line);	memset (data, 0, sizeof *data);}/* Make a copy of the data in data_string, upping the buffer reference   count if there's a buffer. */void data_string_truncate (dp, len)	struct data_string *dp;	int len;{	if (len < dp -> len) {		dp -> terminated = 0;		dp -> len = len;	}}

⌨️ 快捷键说明

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