亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? net.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/fs/proc/net.c
 *
 *  Copyright (C) 1991, 1992 Linus Torvalds
 *
 *  gjh 3/'93 heim@peanuts.informatik.uni-tuebingen.de (Gerald J. Heim)
 *            most of this file is stolen from base.c
 *            it works, but you shouldn't use it as a guideline
 *            for new proc-fs entries. once i'll make it better.
 * fvk 3/'93  waltje@uwalt.nl.mugnet.org (Fred N. van Kempen)
 *	      cleaned up the whole thing, moved "net" specific code to
 *	      the NET kernel layer (where it belonged in the first place).
 * Michael K. Johnson (johnsonm@stolaf.edu) 3/93
 *            Added support from my previous inet.c.  Cleaned things up
 *            quite a bit, modularized the code.
 * fvk 4/'93  waltje@uwalt.nl.mugnet.org (Fred N. van Kempen)
 *	      Renamed "route_get_info()" to "rt_get_info()" for consistency.
 *
 *  proc net directory handling functions
 */
#include <linux/autoconf.h>

#include <asm/segment.h>

#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>

/* forward references */
static int proc_readnet(struct inode * inode, struct file * file,
			 char * buf, int count);
static int proc_readnetdir(struct inode *, struct file *,
			   struct dirent *, int);
static int proc_lookupnet(struct inode *,const char *,int,struct inode **);

/* the get_*_info() functions are in the net code, and are configured
   in via the standard mechanism... */
extern int unix_get_info(char *);
#ifdef CONFIG_INET
extern int tcp_get_info(char *);
extern int udp_get_info(char *);
extern int raw_get_info(char *);
extern int arp_get_info(char *);
extern int dev_get_info(char *);
extern int rt_get_info(char *);
#endif /* CONFIG_INET */


static struct file_operations proc_net_operations = {
	NULL,			/* lseek - default */
	proc_readnet,		/* read - bad */
	NULL,			/* write - bad */
	proc_readnetdir,	/* readdir */
	NULL,			/* select - default */
	NULL,			/* ioctl - default */
	NULL,			/* mmap */
	NULL,			/* no special open code */
	NULL,			/* no special release code */
	NULL			/* can't fsync */
};

/*
 * proc directories can do almost nothing..
 */
struct inode_operations proc_net_inode_operations = {
	&proc_net_operations,	/* default net directory file-ops */
	NULL,			/* create */
	proc_lookupnet,		/* lookup */
	NULL,			/* link */
	NULL,			/* unlink */
	NULL,			/* symlink */
	NULL,			/* mkdir */
	NULL,			/* rmdir */
	NULL,			/* mknod */
	NULL,			/* rename */
	NULL,			/* readlink */
	NULL,			/* follow_link */
	NULL,			/* bmap */
	NULL,			/* truncate */
	NULL			/* permission */
};

static struct proc_dir_entry net_dir[] = {
	{ 1,2,".." },
	{ 8,1,"." },
	{ 128,4,"unix" }
#ifdef CONFIG_INET
	,{ 129,3,"arp" },
	{ 130,5,"route" },
	{ 131,3,"dev" },
	{ 132,3,"raw" },
	{ 133,3,"tcp" },
	{ 134,3,"udp" }
#endif	/* CONFIG_INET */
};

#define NR_NET_DIRENTRY ((sizeof (net_dir))/(sizeof (net_dir[0])))


static int proc_lookupnet(struct inode * dir,const char * name, int len,
	struct inode ** result)
{
	unsigned int ino;
	int i;

	*result = NULL;
	if (!dir)
		return -ENOENT;
	if (!S_ISDIR(dir->i_mode)) {
		iput(dir);
		return -ENOENT;
	}
	i = NR_NET_DIRENTRY;
	while (i-- > 0 && !proc_match(len,name,net_dir+i))
		/* nothing */;
	if (i < 0) {
		iput(dir);
		return -ENOENT;
	}
	ino = net_dir[i].low_ino;
	if (!(*result = iget(dir->i_sb,ino))) {
		iput(dir);
		return -ENOENT;
	}
	iput(dir);
	return 0;
}

static int proc_readnetdir(struct inode * inode, struct file * filp,
	struct dirent * dirent, int count)
{
	struct proc_dir_entry * de;
	unsigned int ino;
	int i,j;

	if (!inode || !S_ISDIR(inode->i_mode))
		return -EBADF;
	ino = inode->i_ino;
	if (((unsigned) filp->f_pos) < NR_NET_DIRENTRY) {
		de = net_dir + filp->f_pos;
		filp->f_pos++;
		i = de->namelen;
		ino = de->low_ino;
		put_fs_long(ino, &dirent->d_ino);
		put_fs_word(i,&dirent->d_reclen);
		put_fs_byte(0,i+dirent->d_name);
		j = i;
		while (i--)
			put_fs_byte(de->name[i], i+dirent->d_name);
		return j;
	}
	return 0;
}


static int proc_readnet(struct inode * inode, struct file * file,
			char * buf, int count)
{
	char * page;
	int length;
	int end;
	unsigned int ino;

	if (count < 0)
		return -EINVAL;
	if (!(page = (char*) __get_free_page(GFP_KERNEL)))
		return -ENOMEM;
	ino = inode->i_ino;
	switch (ino) {
#ifdef CONFIG_INET
		case 128:
			length = unix_get_info(page);
			break;
		case 129:
			length = arp_get_info(page);
			break;
		case 130:
			length = rt_get_info(page);
			break;
		case 131:
			length = dev_get_info(page);
			break;
		case 132:
			length = raw_get_info(page);
			break;
		case 133:
			length = tcp_get_info(page);
			break;
		case 134:
			length = udp_get_info(page);
			break;
#endif /* CONFIG_INET */
		default:
			free_page((unsigned long) page);
			return -EBADF;
	}
	if (file->f_pos >= length) {
		free_page((unsigned long) page);
		return 0;
	}
	if (count + file->f_pos > length)
		count = length - file->f_pos;
	end = count + file->f_pos;
	memcpy_tofs(buf, page + file->f_pos, count);
	free_page((unsigned long) page);
	file->f_pos = end;
	return count;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久高清一区二区三区| 精品国产乱码久久久久久老虎| 亚洲成人精品影院| 久久九九99视频| 日韩欧美国产成人一区二区| 在线中文字幕一区二区| 成人国产精品免费观看动漫| 精品在线一区二区| 麻豆成人久久精品二区三区小说| 艳妇臀荡乳欲伦亚洲一区| 国产精品国产成人国产三级| 国产午夜一区二区三区| 污片在线观看一区二区 | 色综合av在线| 91色|porny| 一本久久a久久免费精品不卡| 精品第一国产综合精品aⅴ| 午夜av一区二区三区| 日本韩国欧美在线| 国产精品成人一区二区艾草| 国产成人99久久亚洲综合精品| 国产精品99精品久久免费| 国产一区二区三区免费看| 成人深夜在线观看| 在线观看中文字幕不卡| 欧美揉bbbbb揉bbbbb| 日韩一区二区在线免费观看| 精品日韩在线观看| 亚洲色图另类专区| 天天免费综合色| 欧洲国产伦久久久久久久| 国产精品国产a| 91浏览器打开| 亚洲精品免费播放| 强制捆绑调教一区二区| 高清久久久久久| 久久九九久久九九| 盗摄精品av一区二区三区| 国产亚洲精品久| 成人黄色一级视频| 综合自拍亚洲综合图不卡区| 日本高清不卡在线观看| 亚洲一区二区不卡免费| 国产精品456露脸| 欧美国产成人精品| 免费久久精品视频| 久久五月婷婷丁香社区| 性感美女久久精品| 欧美一级高清片在线观看| 美女视频黄a大片欧美| 精品欧美黑人一区二区三区| 国产美女av一区二区三区| 国产精品国产三级国产普通话99 | 99精品国产91久久久久久| 久久这里只有精品首页| 国产激情视频一区二区三区欧美 | 日本vs亚洲vs韩国一区三区二区| 91麻豆精品国产91久久久 | 欧美一区二区网站| 亚洲国产精品自拍| 91精品国产aⅴ一区二区| 日韩专区欧美专区| 色悠悠亚洲一区二区| 午夜精品久久久久| 久久免费偷拍视频| 日本高清不卡视频| 国产一区二区三区四区五区入口 | 久久婷婷国产综合国色天香| www.爱久久.com| 久久久精品国产免大香伊| av在线这里只有精品| 男人的天堂亚洲一区| 亚洲婷婷国产精品电影人久久| 欧美日韩国产在线播放网站| 国产精品久久777777| 欧美精品tushy高清| 亚洲最大色网站| 久久久久国色av免费看影院| 欧美自拍丝袜亚洲| 成人性生交大片免费看中文| 午夜视黄欧洲亚洲| 国产精品夫妻自拍| 欧美成人在线直播| 欧美日韩中文国产| 成人免费视频视频在线观看免费| 亚洲va韩国va欧美va| 亚洲天堂av老司机| 精品福利一二区| 欧美日韩国产综合草草| 99久久99久久精品免费观看| 久久国产精品99精品国产| 91精品婷婷国产综合久久竹菊| 成人av免费在线| 国产麻豆欧美日韩一区| 日本中文一区二区三区| 精品国产三级a在线观看| 91国模大尺度私拍在线视频| 成人一区二区三区中文字幕| 美女网站一区二区| 亚洲va欧美va人人爽午夜| 亚洲欧美日韩成人高清在线一区| 欧美私人免费视频| 麻豆精品一二三| 亚洲成人免费电影| 亚洲精品国产精华液| 国产精品美女久久久久aⅴ国产馆| 91美女片黄在线| 国产成人精品三级麻豆| 国产精品一区二区你懂的| 久久草av在线| 蜜桃av一区二区在线观看| 丝袜国产日韩另类美女| 亚洲成人免费视| 亚洲成a天堂v人片| 亚洲国产精品一区二区久久恐怖片| 亚洲欧美欧美一区二区三区| 亚洲免费观看视频| 一二三四社区欧美黄| 亚洲综合免费观看高清完整版在线| 亚洲人精品一区| 亚洲综合在线电影| 亚洲中国最大av网站| 污片在线观看一区二区| 天天操天天色综合| 另类小说一区二区三区| 另类专区欧美蜜桃臀第一页| 国产美女视频一区| 成年人国产精品| 91久久一区二区| 欧美性猛交xxxx乱大交退制版| 欧美日韩视频第一区| 日韩一区二区精品| 久久久久国产精品麻豆ai换脸| 中文字幕精品一区二区精品绿巨人 | 精品精品国产高清一毛片一天堂| 26uuu久久综合| 国产精品美女www爽爽爽| 亚洲精品国产精华液| 奇米色777欧美一区二区| 国产二区国产一区在线观看| 色婷婷综合中文久久一本| 在线播放中文字幕一区| 久久精品视频在线看| 亚洲精品日日夜夜| 另类欧美日韩国产在线| 粉嫩一区二区三区在线看| 欧美亚洲禁片免费| 精品国产1区2区3区| 亚洲天堂成人网| 看电影不卡的网站| 北条麻妃国产九九精品视频| 欧美日韩成人综合| 欧美激情一区二区三区不卡| 亚洲综合无码一区二区| 久久99这里只有精品| 在线一区二区三区| 欧美一区二区三区四区视频| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲国产精品一区二区久久恐怖片| 极品少妇xxxx偷拍精品少妇| 91视频www| 久久久一区二区三区| 亚洲二区在线视频| 国产91色综合久久免费分享| 在线成人午夜影院| 亚洲丝袜自拍清纯另类| 国产主播一区二区| 国内精品国产成人| 91成人在线精品| 国产精品麻豆网站| 久久精品国产一区二区| 日本乱码高清不卡字幕| 国产精品萝li| 国内精品第一页| 日韩一区二区在线免费观看| 怡红院av一区二区三区| 99精品久久免费看蜜臀剧情介绍| 精品国产乱码91久久久久久网站| 亚洲18女电影在线观看| 91亚洲精品久久久蜜桃网站 | 三级在线观看一区二区| 99精品桃花视频在线观看| 国产亚洲精品久| 韩国欧美一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品麻豆网站| 国产成人综合视频| 精品日韩在线观看| 日本va欧美va欧美va精品| 欧美色偷偷大香| 亚洲精品国产高清久久伦理二区| 国产凹凸在线观看一区二区| 久久免费看少妇高潮| 久久91精品国产91久久小草 | 久久成人麻豆午夜电影| 日韩一区国产二区欧美三区| 三级久久三级久久| 91麻豆精品国产综合久久久久久| 亚洲大型综合色站| 91麻豆精品国产|