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

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

?? net.c

?? 內核是系統的心臟
?? 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一区二区三区免费野_久草精品视频
中文字幕在线一区| 91精品国产色综合久久| 看片的网站亚洲| 亚洲成av人片在线观看无码| 亚洲黄色免费网站| 一区二区三区四区国产精品| 亚洲一区二区在线免费看| 亚洲欧美日韩系列| 亚洲电影一级片| 蜜芽一区二区三区| 久久99精品国产91久久来源| 国产精品一区二区免费不卡| 成人黄色免费短视频| 色综合色狠狠综合色| 欧美日韩亚洲另类| 日韩久久精品一区| 国产精品色哟哟网站| 一区二区三区中文字幕精品精品 | 日韩一区二区在线播放| 欧美一区永久视频免费观看| 精品久久久久久久久久久久包黑料| 欧美电影免费观看完整版| 中文字幕乱码亚洲精品一区| 亚洲欧美日韩精品久久久久| 日韩精品欧美成人高清一区二区| 美日韩一区二区三区| 粉嫩绯色av一区二区在线观看| 成人免费观看男女羞羞视频| 色噜噜狠狠一区二区三区果冻| 777欧美精品| 国产精品毛片久久久久久久| 亚洲韩国精品一区| 国产精品一色哟哟哟| 91传媒视频在线播放| 久久久久久97三级| 亚洲黄色小视频| 国产一区二区三区在线看麻豆| 91论坛在线播放| 精品久久久久99| 亚洲香肠在线观看| 国产成人h网站| 日韩一级欧美一级| 国产精品久久久久久久浪潮网站| 日日夜夜精品视频天天综合网| 成人一级黄色片| 欧美一级日韩免费不卡| 亚洲欧洲精品一区二区精品久久久| 婷婷丁香激情综合| 91色porny蝌蚪| 欧美精品一区二区三区蜜桃视频 | 日本视频在线一区| jlzzjlzz欧美大全| 久久伊99综合婷婷久久伊| 一区二区三区产品免费精品久久75| 精品一区二区av| 欧美日韩一级黄| 亚洲色图19p| 国产露脸91国语对白| 日韩精品一区二区三区四区视频| 樱桃国产成人精品视频| 99久久亚洲一区二区三区青草| 精品理论电影在线观看| 蜜臀av性久久久久av蜜臀妖精| 欧美手机在线视频| 亚洲专区一二三| 日本韩国一区二区| 国产精品久久久久四虎| 国产精品18久久久久久久久| 欧美电视剧免费全集观看| 日韩国产精品91| 欧美精品在线一区二区| 婷婷综合五月天| 欧美性感一类影片在线播放| 亚洲自拍偷拍九九九| 色视频一区二区| 亚洲自拍另类综合| 精品视频1区2区3区| 亚洲狠狠爱一区二区三区| 欧美日韩久久久| 日韩成人伦理电影在线观看| 制服视频三区第一页精品| 欧美aa在线视频| 精品国产三级电影在线观看| 国产中文一区二区三区| 日本一区二区在线不卡| proumb性欧美在线观看| 亚洲图片你懂的| 欧美午夜精品久久久| 婷婷综合五月天| 日韩精品最新网址| 国产在线不卡视频| 中文字幕在线不卡| 欧美视频你懂的| 免费在线观看一区| 中文字幕一区二区三区蜜月| 菠萝蜜视频在线观看一区| 一区在线播放视频| 7777精品伊人久久久大香线蕉最新版| 天天影视色香欲综合网老头| 精品久久人人做人人爽| 国产91综合网| 五月综合激情婷婷六月色窝| 日韩欧美一卡二卡| 成人一区二区三区| 日精品一区二区| 久久精品亚洲一区二区三区浴池 | 五月天亚洲精品| 精品国产乱码久久久久久老虎| 不卡一二三区首页| 日韩高清在线电影| 国产精品久久久久久久第一福利| 日本精品一区二区三区高清| 蜜臀久久99精品久久久画质超高清 | 中文字幕高清一区| 精品视频在线视频| 国产成人精品综合在线观看| 亚洲最快最全在线视频| 久久人人爽爽爽人久久久| 91国偷自产一区二区使用方法| 精品无人区卡一卡二卡三乱码免费卡| 国产精品剧情在线亚洲| 日韩欧美综合在线| 一本一道久久a久久精品| 久久国内精品视频| 亚洲欧美成人一区二区三区| 久久午夜色播影院免费高清| 欧洲色大大久久| 成人av午夜影院| 久久97超碰国产精品超碰| 亚洲小少妇裸体bbw| 综合电影一区二区三区| 精品对白一区国产伦| 7777精品伊人久久久大香线蕉的| www.亚洲在线| 国产91露脸合集magnet | 精品电影一区二区| 欧美日韩精品福利| 欧美自拍丝袜亚洲| av不卡在线播放| 国产精品主播直播| 麻豆91在线观看| 亚洲国产精品久久久久秋霞影院 | 色哟哟国产精品| 成人网男人的天堂| 国产精品一区一区| 美女尤物国产一区| 日本美女一区二区三区视频| 亚洲午夜久久久| 亚洲最大色网站| 亚洲成人高清在线| 亚洲一区二区精品久久av| 亚洲精品欧美在线| 亚洲午夜电影在线| 亚洲电影第三页| 亚洲bt欧美bt精品777| 午夜激情久久久| 日韩高清欧美激情| 毛片不卡一区二区| 精品在线你懂的| 国产精品亚洲а∨天堂免在线| 国内精品自线一区二区三区视频| 国产一区二区免费在线| 国产在线播放一区二区三区| 国产高清在线精品| www.99精品| 欧美日韩视频在线第一区 | 日韩1区2区3区| 蜜臀av性久久久久蜜臀aⅴ | 日韩国产在线一| 久久精品国产久精国产爱| 精品中文字幕一区二区小辣椒| 韩国精品主播一区二区在线观看| 国产精品1区二区.| 色婷婷亚洲一区二区三区| 欧美日韩精品一区二区在线播放| 欧美专区亚洲专区| 精品国产区一区| 欧美激情一区二区三区蜜桃视频| 国产精品久久福利| 图片区小说区区亚洲影院| 久久99久久99小草精品免视看| 国产成人一区在线| 欧美日韩成人综合| 久久这里只有精品首页| 亚洲精品成人在线| 久久国产福利国产秒拍| 99久久综合99久久综合网站| 欧美精品久久99久久在免费线 | 捆绑调教一区二区三区| 丁香婷婷综合色啪| 欧美一区二区三区在线电影| 国产亚洲欧美日韩日本| 丝袜脚交一区二区| 99精品视频在线播放观看| 欧美一级片在线看| 综合精品久久久| 国产中文字幕精品| 4438x亚洲最大成人网| 国产精品欧美一级免费| 日本视频一区二区三区|