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

📄 classmask.c

📁 在x86平台上运行不可信任代码的sandbox。
💻 C
字号:
#include "u.h"#include "lib.h"#include "ip.h"static uchar classmask[4][16] = {	0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0x00,0x00,0x00,	0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0x00,0x00,0x00,	0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0xff,0x00,0x00,	0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0xff,  0xff,0xff,0xff,0x00,};static uchar v6loopback[IPaddrlen] = {	0, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0x01};static uchar v6linklocal[IPaddrlen] = {	0xfe, 0x80, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0};static uchar v6linklocalmask[IPaddrlen] = {	0xff, 0xff, 0xff, 0xff,	0xff, 0xff, 0xff, 0xff,	0, 0, 0, 0,	0, 0, 0, 0};static int v6llpreflen = 8;	/* link-local prefix length in bytes */static uchar v6multicast[IPaddrlen] = {	0xff, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0};static uchar v6multicastmask[IPaddrlen] = {	0xff, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0};static int v6mcpreflen = 1;	/* multicast prefix length */static uchar v6solicitednode[IPaddrlen] = {	0xff, 0x02, 0, 0,	0, 0, 0, 0,	0, 0, 0, 0x01,	0xff, 0, 0, 0};static uchar v6solicitednodemask[IPaddrlen] = {	0xff, 0xff, 0xff, 0xff,	0xff, 0xff, 0xff, 0xff,	0xff, 0xff, 0xff, 0xff,	0xff, 0x0, 0x0, 0x0};static int v6snpreflen = 13;uchar*defmask(uchar *ip){	if(isv4(ip))		return classmask[ip[IPv4off]>>6];	else {		if(ipcmp(ip, v6loopback) == 0)			return IPallbits;		else if(memcmp(ip, v6linklocal, v6llpreflen) == 0)			return v6linklocalmask;		else if(memcmp(ip, v6solicitednode, v6snpreflen) == 0)			return v6solicitednodemask;		else if(memcmp(ip, v6multicast, v6mcpreflen) == 0)			return v6multicastmask;		return IPallbits;	}}voidmaskip(uchar *from, uchar *mask, uchar *to){	int i;	for(i = 0; i < IPaddrlen; i++)		to[i] = from[i] & mask[i];}

⌨️ 快捷键说明

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