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

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

?? dsr.h

?? LINUX下的mesh路由協議dsr的源代碼包
?? H
字號:
/* Copyright (C) Uppsala University * * This file is distributed under the terms of the GNU general Public * License (GPL), see the file LICENSE * * Author: Erik Nordstr?m, <erikn@it.uu.se> */#ifndef _DSR_H#define _DSR_H#ifdef __KERNEL__#include <asm/byteorder.h>#include <linux/types.h>//#include <linux/in.h>#include <linux/netdevice.h>#include <linux/skbuff.h>#include <linux/ip.h>#include <linux/time.h>#ifdef KERNEL26#include <linux/jiffies.h>#endif#else#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <endian.h>#include <netinet/in.h>#endif				/* __KERNEL__ */#include "dsr-pkt.h"#include "timer.h"#ifndef NO_GLOBALS#define DSR_BROADCAST ((unsigned int) 0xffffffff)#ifdef NS2#define IPPROTO_DSR PT_DSR#else#define IPPROTO_DSR 168		/* Is this correct? */#endif#define IP_HDR_LEN 20#define DSR_OPTS_MAX_SIZE 50	/* This is used to reduce the MTU of the DSR *				 * device so that packets are not too big after				 * adding the DSR header. A better solution				 * should probably be found... */enum confval {#ifdef DEBUG	PrintDebug,#endif	FlushLinkCache,	PromiscOperation,	BroadCastJitter,	RouteCacheTimeout,	SendBufferTimeout,	SendBufferSize,	RequestTableSize,	RequestTableIds,	MaxRequestRexmt,	MaxRequestPeriod,	RequestPeriod,	NonpropRequestTimeout,	RexmtBufferSize,	MaintHoldoffTime,	MaxMaintRexmt,	UseNetworkLayerAck,	TryPassiveAcks,	PassiveAckTimeout,	GratReplyHoldOff,	MAX_SALVAGE_COUNT,	CONFVAL_MAX,};enum confval_type {	SECONDS,	MILLISECONDS,	MICROSECONDS,	NANOSECONDS,	QUANTA,	BINARY,	COMMAND,	CONFVAL_TYPE_MAX,};#define MAINT_BUF_MAX_LEN 50#define RREQ_TBL_MAX_LEN 64	/* Should be enough */#define SEND_BUF_MAX_LEN 100#define RREQ_TLB_MAX_ID 16static struct {	const char *name;	const unsigned int val;	enum confval_type type;} confvals_def[CONFVAL_MAX] = {#ifdef DEBUG	{	"PrintDebug", 0, BINARY},#endif	{	"FlushLinkCache", 1, COMMAND}, {	"PromiscOperation", 1, BINARY}, {	"BroadCastJitter", 20, MILLISECONDS}, {	"RouteCacheTimeout", 300, SECONDS}, {	"SendBufferTimeout", 30, SECONDS}, {	"SendBufferSize", SEND_BUF_MAX_LEN, QUANTA}, {	"RequestTableSize", RREQ_TBL_MAX_LEN, QUANTA}, {	"RequestTableIds", RREQ_TLB_MAX_ID, QUANTA}, {	"MaxRequestRexmt", 16, QUANTA}, {	"MaxRequestPeriod", 10, SECONDS}, {	"RequestPeriod", 500, MILLISECONDS}, {	"NonpropRequestTimeout", 30, MILLISECONDS}, {	"RexmtBufferSize", MAINT_BUF_MAX_LEN}, {	"MaintHoldoffTime", 250, MILLISECONDS}, {	"MaxMaintRexmt", 2, QUANTA}, {	"UseNetworkLayerAck", 1, BINARY}, {	"TryPassiveAcks", 1, QUANTA}, {	"PassiveAckTimeout", 100, MILLISECONDS}, {	"GratReplyHoldOff", 1, SECONDS}, {	"MAX_SALVAGE_COUNT", 15, QUANTA}};struct dsr_node {	struct in_addr ifaddr;	struct in_addr bcaddr;	unsigned int confvals[CONFVAL_MAX];#ifdef __KERNEL__	struct net_device *dev;	struct net_device *slave_dev;	struct in_device *slave_indev;	struct net_device_stats stats;	spinlock_t lock;#endif};#ifdef __KERNEL__#define DSR_SPIN_LOCK(l)    spin_lock(l)#define DSR_SPIN_UNLOCK(l)  spin_unlock(l)#define MALLOC(s, p)        kmalloc(s, p)#define FREE(p)             kfree(p)#define NSCLASS#define XMIT(pkt)           dsr_dev_xmit(pkt)#else#define DSR_SPIN_LOCK(l)#define DSR_SPIN_UNLOCK(l)#endif				/* __KERNEL__ */#ifdef __KERNEL__#define ConfVal(cv) (get_confval(cv))#define ConfValToUsecs(cv) (confval_to_usecs(cv))extern struct dsr_node *dsr_node;static inline const unsigned int get_confval(enum confval cv){	unsigned int val = 0;	if (dsr_node) {		DSR_SPIN_LOCK(&dsr_node->lock);		val = dsr_node->confvals[cv];		DSR_SPIN_UNLOCK(&dsr_node->lock);	}	return val;}static inline const int set_confval(enum confval cv, unsigned int val){	if (dsr_node) {		DSR_SPIN_LOCK(&dsr_node->lock);		dsr_node->confvals[cv] = val;		DSR_SPIN_UNLOCK(&dsr_node->lock);	} else		return -1;	return val;}static inline void dsr_node_init(struct dsr_node *dn){	int i;	spin_lock_init(&dn->lock);	dn->dev = NULL;	dn->slave_dev = NULL;	for (i = 0; i < CONFVAL_MAX; i++) {		dn->confvals[i] = confvals_def[i].val;	}}static inline struct in_addr my_addr(void){	static struct in_addr my_addr;	if (dsr_node) {		DSR_SPIN_LOCK(&dsr_node->lock);		my_addr = dsr_node->ifaddr;		DSR_SPIN_UNLOCK(&dsr_node->lock);	}	return my_addr;}static inline unsigned long time_add_msec(unsigned long msecs){	struct timespec t;	t.tv_sec = msecs / 1000;	t.tv_nsec = (msecs * 1000000) % 1000000000;	return timespec_to_jiffies(&t);}static inline const int get_slave_dev_ifindex(void){	int ifindex = -1;	if (dsr_node) {		DSR_SPIN_LOCK(&dsr_node->lock);		if (dsr_node->slave_dev)			ifindex = dsr_node->slave_dev->ifindex;		DSR_SPIN_UNLOCK(&dsr_node->lock);	}	return ifindex;}static inline void dsr_node_lock(struct dsr_node *dnode){	spin_lock(&dnode->lock);}static inline void dsr_node_unlock(struct dsr_node *dnode){	spin_unlock(&dnode->lock);}int dsr_ip_recv(struct sk_buff *skb);int do_mackill(char *mac);#endif#endif				/* NO_GLOBALS */#ifndef NO_DECLSstatic inline usecs_t confval_to_usecs(enum confval cv){	usecs_t usecs = 0;	unsigned int val;	val = ConfVal(cv);	switch (confvals_def[cv].type) {	case SECONDS:		usecs = val * 1000000;		break;	case MILLISECONDS:		usecs = val * 1000;		break;	case MICROSECONDS:		usecs = val;		break;	case NANOSECONDS:		usecs = val / 1000;		break;	case BINARY:	case QUANTA:	case COMMAND:	case CONFVAL_TYPE_MAX:		break;	}	return usecs;}#endif				/* NO_DECLS */#endif				/* _DSR_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区在线观看| 日韩伦理av电影| 丁香激情综合国产| 一区二区国产盗摄色噜噜| 欧美日产国产精品| 国产精品一区二区久久不卡| 亚洲免费电影在线| 欧美另类videos死尸| 国产精品综合av一区二区国产馆| 日韩一区日韩二区| 欧美一区二区免费| a亚洲天堂av| 久久99精品久久久久久动态图| 综合久久一区二区三区| 欧美草草影院在线视频| 色94色欧美sute亚洲线路一久| 精品午夜一区二区三区在线观看| 亚洲精品视频在线| 日韩不卡一区二区三区| 国产精品天天看| 欧美一级黄色录像| 91美女蜜桃在线| 国产精品亚洲第一| 亚洲免费观看高清完整版在线观看| 精品成人一区二区三区| 欧美日韩久久久久久| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 在线免费不卡电影| 国产精品伊人色| 日本午夜一区二区| 亚洲国产日日夜夜| 综合精品久久久| 久久久国产午夜精品| 欧美一区二区三区在| 色素色在线综合| 成人晚上爱看视频| 国产精品自拍网站| 精品一区二区三区免费观看| 日韩精品成人一区二区在线| 亚洲综合在线观看视频| 国产欧美在线观看一区| 久久综合久久综合九色| 欧美精品久久一区| 欧美三区免费完整视频在线观看| k8久久久一区二区三区 | 欧美精品少妇一区二区三区| 色av一区二区| 色哟哟一区二区在线观看| 不卡大黄网站免费看| 国产精品亚洲综合一区在线观看| 激情综合色综合久久| 亚洲国产一区视频| 亚洲一区在线观看网站| 亚洲欧美日韩久久| 亚洲色图.com| 亚洲欧美日韩在线播放| 亚洲少妇中出一区| 自拍视频在线观看一区二区| 国产精品国产精品国产专区不蜜| 中文字幕免费在线观看视频一区| 欧美经典一区二区| 国产精品天天看| 亚洲欧美日韩精品久久久久| 亚洲女性喷水在线观看一区| 亚洲精品久久嫩草网站秘色| 亚洲在线中文字幕| 天堂影院一区二区| 91久久精品一区二区三| 欧美在线观看视频一区二区| 欧美视频在线不卡| 91麻豆精品国产91久久久| 日韩欧美一级精品久久| 久久尤物电影视频在线观看| 久久久久国产精品厨房| 国产精品美女一区二区在线观看| 亚洲视频免费看| 一区二区成人在线视频| 性做久久久久久免费观看欧美| 青青草97国产精品免费观看| 国产一区二区三区综合| av电影天堂一区二区在线观看| 不卡的av网站| 欧美二区三区的天堂| 欧美大片在线观看一区| 欧美高清在线视频| 亚洲情趣在线观看| 全国精品久久少妇| 国产成人福利片| 成人在线综合网站| 欧美特级限制片免费在线观看| 日韩一区二区在线看| 国产日韩欧美综合一区| 亚洲一区中文日韩| 国产一区二区精品久久99| 国产乱子伦视频一区二区三区 | 亚洲h在线观看| 国产一区二区三区免费播放| 色诱亚洲精品久久久久久| 欧美伦理电影网| 欧美极品xxx| 亚洲五码中文字幕| 国产iv一区二区三区| 欧美视频一区二区三区四区| 欧美成人综合网站| 亚洲另类在线一区| 国产综合色在线视频区| 在线免费观看日韩欧美| 精品少妇一区二区| 综合网在线视频| 日韩在线卡一卡二| 99免费精品视频| 精品国产一区二区三区不卡| 国产精品成人免费在线| 亚洲午夜免费福利视频| 国产成人av自拍| 欧美人牲a欧美精品| 一个色在线综合| 欧美日韩一级视频| 欧美激情在线看| 国产福利精品一区| 欧美不卡激情三级在线观看| 婷婷久久综合九色国产成人| 日本二三区不卡| 亚洲综合偷拍欧美一区色| 99精品视频中文字幕| 久久99精品国产.久久久久久| 91精品国产手机| 免费人成网站在线观看欧美高清| 欧美浪妇xxxx高跟鞋交| 首页亚洲欧美制服丝腿| 91精品中文字幕一区二区三区| 亚洲成人免费影院| 欧美丰满少妇xxxxx高潮对白| 日韩精品国产欧美| 在线观看91精品国产麻豆| 婷婷丁香久久五月婷婷| 8x福利精品第一导航| 日本成人在线一区| 欧美成人猛片aaaaaaa| 久久99久久久久久久久久久| 26uuu久久综合| 福利一区在线观看| 国产精品的网站| 欧美亚洲国产一卡| 视频一区在线播放| 日韩免费看网站| 国产成人夜色高潮福利影视| 中文字幕国产一区| 色8久久精品久久久久久蜜| 亚洲图片欧美一区| 日韩免费福利电影在线观看| 国产一区二区三区在线看麻豆| 亚洲国产精品传媒在线观看| 99在线精品视频| 亚洲第一会所有码转帖| 欧美大度的电影原声| 成人免费毛片app| 亚洲成在人线免费| 精品国产一区二区三区忘忧草 | 美国欧美日韩国产在线播放| 久久久久久麻豆| 色综合咪咪久久| 日韩国产高清在线| 久久精品一区二区三区不卡牛牛| 99在线精品一区二区三区| 亚洲国产精品自拍| 欧美不卡视频一区| 91美女在线观看| 日本欧美韩国一区三区| 精品国产91九色蝌蚪| 91免费视频大全| 久久国产生活片100| 日韩理论片网站| 在线综合+亚洲+欧美中文字幕| 国产成人精品免费视频网站| 亚洲成人激情社区| 日本一区二区免费在线| 欧美精品欧美精品系列| 成人一区在线观看| 日韩中文字幕av电影| 国产精品你懂的在线| 欧美一区二区三区四区在线观看 | 国产亲近乱来精品视频 | 日韩三级在线观看| 色综合咪咪久久| 欧美日韩精品电影| 成人黄色免费短视频| 另类小说图片综合网| 亚洲精品视频在线观看网站| 26uuu精品一区二区在线观看| 色婷婷av一区二区三区大白胸| 精品在线你懂的| 亚洲国产精品一区二区www| 久久久精品tv| 欧美一区二区三区在线视频| 色婷婷精品大在线视频| 成人一道本在线| 国模一区二区三区白浆| 婷婷开心久久网| 亚洲欧美另类小说|