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

📄 dyncheck.h

📁 一个学习SNMP项目:tmoerlan.
💻 H
字号:
/* $Id: dyncheck.h,v 1.2 2003/09/17 11:26:10 tmoerlan Exp $ */#ifndef _SNAP_DYNCHECK_H_#define _SNAP_DYNCHECK_H_#ifdef __KERNEL__#include <linux/kernel.h>#include <linux/types.h>#include <linux/icmp.h>#define __STRING(x) #x#endif /* __KERNEL__ */#ifndef NDYNCHECK#ifndef __KERNEL__#define DYNCHECK_RET(expr,retv)                                             \  { if (!(expr)) {                                                          \      fprintf(stderr,"%s:%d: dynamic check '%s' failed, dropping packet\n", \              __FILE__,__LINE__,__STRING(expr));                            \      fflush(stderr);                                                       \      return (retv);                                                        \    }                                                                       \  }#else#define DYNCHECK_RET(expr,retv)                                             \  { if (!(expr)) {                                                          \      printk(KERN_WARNING "%s:%d: dynamic check '%s' failed, dropping packet\n", \              __FILE__,__LINE__,__STRING(expr));                            \      return (retv);                                                        \    }                                                                       \  }#endif /* !__KERNEL__ */#ifdef __KERNEL__#define DYNCHECK(expr) DYNCHECK_RET(expr,-ICMP_PARAMETERPROB)#else#define DYNCHECK(expr) DYNCHECK_RET(expr,-1)#endif /* __KERNEL__ */#else#define DYNCHECK(expr) /**/#define DYNCHECK_RET(expr,retv) /**/#endif /* !NDYNCHECK */#define DYNCHECK_IN_HEAP(ho)						\  DYNCHECK((((void *)(ho) >= p->heap_min) &&				\	    ((void *)(ho) < p->heap_max) &&				\	    (((void *)(ho) + 						\	      ((ho)->len + sizeof(heap_obj))) <= p->heap_max)) ||	\	   (((void *)(ho) >= (void *)p->stack_max) &&			\	    ((void *)(ho) < p->h_alloc_heap_max) &&			\	    (((void *)(ho) + 						\	      ((ho)->len + sizeof(heap_obj))) <= p->h_alloc_heap_max)))#define DYNCHECK_ADDR_IN_HEAP(ho)				\  DYNCHECK((((void *)(ho) >= p->heap_min) &&			\	    ((void *)(ho) < p->heap_max) &&			\	    (((void *)(ho) + sizeof(uint32) + 		\	      sizeof(heap_obj)) <= p->heap_max)) ||		\	   (((void *)(ho) >= (void *)p->stack_max) &&		\	    ((void *)(ho) < p->h_alloc_heap_max) &&		\	    (((void *)(ho) + sizeof(uint32) + 		\	      sizeof(heap_obj)) <= p->h_alloc_heap_max)))#endif /* !_SNAP_DYNCHECK_H_ */

⌨️ 快捷键说明

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