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

📄 utils.h

📁 也是一个linux系统下的网络入侵检测程序
💻 H
字号:
#ifndef _UTILS_H_#define _UTILS_H_typedef struct _node{		unsigned long 	addr;	char *		symbol;	struct _node 	*left, *right;} node, *nodep;/****************************************** * FuncName: get_addr                     * * Usage: convert string to hex           * * @Params:                               * *    char *p -> pointer to string        * * RetValue: int hex value                * * e.g: "0x12345678" -> 0x12345678        * ******************************************/unsigned int get_addr(char *p){	unsigned int ret;	if(*p++ != '0' || *p++ !='x')		return 0;	ret = 0;	while(*p){		switch(*p){			case '0': case '1': case '2': case '3': case '4':			case '5': case '6': case '7': case '8': case '9':				ret = (ret << 4) + (*p - '0');				break;			case 'a': case 'b': case 'c':			case 'd': case 'e': case 'f':				ret = (ret << 4) + (*p - 'a') + 10;				break;			case 'A': case 'B': case 'C':			case 'D': case 'E': case 'F':				ret = (ret << 4) + (*p - 'A') + 10;				break;			default:				return 0;		}		p++;	}	return ret;}unsigned long get_addr_2(char *p){	unsigned long 	ret;	int		i;	ret = 0;	for(i = 0; i < 8; i++, p++)		switch(*p){			case '0': case '1': case '2': case '3': case '4':			case '5': case '6': case '7': case '8': case '9':				ret = (ret << 4) + (*p - '0');				break;			case 'a': case 'b': case 'c':			case 'd': case 'e': case 'f':				ret = (ret << 4) + (*p - 'a') + 10;				break;			case 'A': case 'B': case 'C':			case 'D': case 'E': case 'F':				ret = (ret << 4) + (*p - 'A') + 10;				break;			default:				return 0;		};		return ret;}node * add_node(nodep root, unsigned long addr, const char *symbol){	char 	*p;	nodep	np, iterp;		np = (nodep)malloc(sizeof(node));	p = strdup(symbol);	np->left = np->right = NULL;	np->addr = addr;	np->symbol = p;		if(!root)		return np;	iterp = root;	do{		if(iterp->addr < addr)			if(iterp->right)				iterp = iterp->right;			else{				iterp->right = np;				break;			}		else if(iterp->addr > addr)			if(iterp->left)				iterp = iterp->left;			else{				iterp->left = np;				break;			}		else{			free(np);			free(iterp->symbol);			iterp->symbol = p;			break;		}	}while(1);		return root;	}char *find_symbol(nodep root, unsigned long addr){	nodep	np;		if(!root)		return NULL;		np = root;	while(np){		if(np->addr == addr)			break;		else if(np->addr > addr)			np = np->left;		else			np = np->right;	};	if(np)		return np->symbol;	else		return NULL;}		#endif /* _UTILS_H_ */

⌨️ 快捷键说明

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