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

📄 gencode.h

📁 该软件根据网络数据生成NetFlow记录。NetFlow可用于网络规划、负载均衡、安全监控等
💻 H
字号:
/* * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#) $Header: gencode.h,v 1.36 96/07/17 00:11:34 leres Exp $ (LBL) *//*XXX*/#include "gnuc.h"/* Address qualifiers. */#define Q_HOST		1#define Q_NET		2#define Q_PORT		3#define Q_GATEWAY	4#define Q_PROTO		5/* Protocol qualifiers. */#define Q_LINK		1#define Q_IP		2#define Q_ARP		3#define Q_RARP		4#define Q_TCP		5#define Q_UDP		6#define Q_ICMP		7#define Q_IGMP		8#define Q_IGRP		9#define	Q_ATALK		10#define	Q_DECNET	11#define	Q_LAT		12#define Q_SCA		13#define	Q_MOPRC		14#define	Q_MOPDL		15/* Directional qualifiers. */#define Q_SRC		1#define Q_DST		2#define Q_OR		3#define Q_AND		4#define Q_DEFAULT	0#define Q_UNDEF		255struct stmt {	int code;	bpf_int32 k;};struct slist {	struct stmt s;	struct slist *next;};/*  * A bit vector to represent definition sets.  We assume TOT_REGISTERS * is smaller than 8*sizeof(atomset). */typedef bpf_u_int32 atomset;#define ATOMMASK(n) (1 << (n))#define ATOMELEM(d, n) (d & ATOMMASK(n))/* * An unbounded set. */typedef bpf_u_int32 *uset;/* * Total number of atomic entities, including accumulator (A) and index (X). * We treat all these guys similarly during flow analysis. */#define N_ATOMS (BPF_MEMWORDS+2)struct edge {	int id;	int code;	uset edom;	struct block *succ;	struct block *pred;	struct edge *next;	/* link list of incoming edges for a node */};struct block {	int id;	struct slist *stmts;	/* side effect stmts */	struct stmt s;		/* branch stmt */	int mark;	int longjt;		/* jt branch requires long jump */	int longjf;		/* jf branch requires long jump */	int level;	int offset;	int sense;	struct edge et;	struct edge ef;	struct block *head;	struct block *link;	/* link field used by optimizer */	uset dom;	uset closure;	struct edge *in_edges;	atomset def, kill;	atomset in_use;	atomset out_use;	int oval;	int val[N_ATOMS];};struct arth {	struct block *b;	/* protocol checks */	struct slist *s;	/* stmt list */	int regno;		/* virtual register number of result */};struct qual {	unsigned char addr;	unsigned char proto;	unsigned char dir;	unsigned char pad;};struct arth *gen_loadi(int);struct arth *gen_load(int, struct arth *, int);struct arth *gen_loadlen(void);struct arth *gen_neg(struct arth *);struct arth *gen_arth(int, struct arth *, struct arth *);void gen_and(struct block *, struct block *);void gen_or(struct block *, struct block *);void gen_not(struct block *);struct block *gen_scode(const char *, struct qual);struct block *gen_ecode(const u_char *, struct qual);struct block *gen_mcode(const char *, const char *, int, struct qual);struct block *gen_ncode(const char *, bpf_u_int32, struct qual);struct block *gen_proto_abbrev(int);struct block *gen_relation(int, struct arth *, struct arth *, int);struct block *gen_less(int);struct block *gen_greater(int);struct block *gen_byteop(int, int, int);struct block *gen_broadcast(int);struct block *gen_multicast(int);struct block *gen_inbound(int);void bpf_optimize(struct block **);#if __STDC____dead void bpf_error(const char *, ...)    __attribute__((volatile, format (printf, 1, 2)));#endifvoid finish_parse(struct block *);char *sdup(const char *);struct bpf_insn *icode_to_fcode(struct block *, int *);int pcap_parse(void);void lex_init(char *);void sappend(struct slist *, struct slist *);/* XXX */#define JT(b)  ((b)->et.succ)#define JF(b)  ((b)->ef.succ)

⌨️ 快捷键说明

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