dyncheck.h

来自「一个学习SNMP项目:tmoerlan.」· C头文件 代码 · 共 64 行

H
64
字号
/* $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 + =
减小字号Ctrl + -
显示快捷键?