nasl_tree.h

来自「大国补丁后的nessus2.2.8的源代码」· C头文件 代码 · 共 148 行

H
148
字号
/* Nessus Attack Scripting Language  * * Copyright (C) 2002 - 2003 Michel Arboi and Renaud Deraison * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, * as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * In addition, as a special exception, Renaud Deraison and Michel Arboi * give permission to link the code of this program with any * version of the OpenSSL library which is distributed under a * license identical to that listed in the included COPYING.OpenSSL * file, and distribute linked combinations including the two. * You must obey the GNU General Public License in all respects * for all of the code used other than OpenSSL.  If you modify * this file, you may extend this exception to your version of the * file, but you are not obligated to do so.  If you do not wish to * do so, delete this exception statement from your version. * */#ifndef NASLTREE_H_INCLUDED#define NASLTREE_H_INCLUDEDenum node_type {  NODE_EMPTY = 0,  NODE_IF_ELSE,	/* [0] = cond, [1] = if_block, [2] = else_block */  NODE_INSTR_L,	/* Block. [0] = first instr, [1] = tail */  NODE_FOR,	/* [0] = start expr, [1] = cond, [2] = end_expr, [3] = block */  NODE_WHILE,	/* [0] = cond, [1] = block */  NODE_FOREACH,  NODE_REPEAT_UNTIL,  NODE_REPEATED,	/* [0] = func call, [1] = repeat nb */  NODE_FUN_DEF,	/* [0] = argdecl, [1] = block */  NODE_FUN_CALL,/* [0] = arglist */  NODE_DECL,	/* [0] = next arg in list */  NODE_ARG,	/* val = name can be NULL, [0] = val, [1] = next arg */  NODE_RETURN,	/* ret val */  NODE_BREAK,  NODE_CONTINUE,  NODE_ARRAY_EL,/* val = array name, [0] = index */  NODE_AFF,	/* [0] = lvalue, [1] = rvalue */  NODE_VAR,	/* val = variable name */  NODE_LOCAL,	/* [0] = argdecl */  NODE_GLOBAL,  NODE_PLUS_EQ,  NODE_MINUS_EQ,  NODE_MULT_EQ,  NODE_DIV_EQ,  NODE_MODULO_EQ,  NODE_L_SHIFT_EQ,  NODE_R_SHIFT_EQ,  NODE_R_USHIFT_EQ,  EXPR_AND,  EXPR_OR,  EXPR_NOT,  EXPR_PLUS,  EXPR_MINUS,  EXPR_U_MINUS,  EXPR_MULT,  EXPR_DIV,  EXPR_MODULO,  EXPR_EXPO,  EXPR_BIT_AND,  EXPR_BIT_OR,  EXPR_BIT_XOR,  EXPR_BIT_NOT,  EXPR_INCR,  EXPR_DECR,  EXPR_L_SHIFT,  EXPR_R_SHIFT,  EXPR_R_USHIFT,  COMP_MATCH,  COMP_NOMATCH,  COMP_RE_MATCH,  COMP_RE_NOMATCH,  COMP_LT,  COMP_LE,  COMP_EQ,  COMP_NE,  COMP_GT,  COMP_GE,  CONST_INT,  CONST_STR,			/* "impure" string */  CONST_DATA,			/* binary data / "pure" string */  CONST_REGEX,			/* Compiled regex */  ARRAY_ELEM,			/* val = char index or NULL if integer,				 * [0] = value, [1] = next element */  /* For exec only */  REF_VAR,  REF_ARRAY,  DYN_ARRAY  };typedef struct TC {  short		type;  short		line_nb;    short		ref_count;	/* Cell is freed when count reaches zero */  int		size;  union {    char	*str_val;    int		i_val;    void	*ref_val;		/* internal reference */  } x;  struct TC	*link[4];} tree_cell;#define FAKE_CELL	((void*)1)#define EXIT_CELL	((void*)2)tree_cell*	alloc_tree_cell(int, char*);tree_cell*	alloc_expr_cell(int, int, tree_cell*, tree_cell*);tree_cell*	alloc_RE_cell(int, int, tree_cell*, char*);tree_cell*	alloc_typed_cell(int);int		nasl_is_leaf(const tree_cell*);char*		get_line_nb(const tree_cell*);tree_cell*	dup_cell(const tree_cell*);void		nasl_dump_tree(const tree_cell*);void		ref_cell(tree_cell*);void		deref_cell(tree_cell*);const char*	nasl_type_name(int);int		cell_type(const tree_cell*);char* 		dump_cell_val(const tree_cell* );#endif

⌨️ 快捷键说明

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