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

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

?? trace.cc.cc

?? 在網絡的邊緣路由器中并不能完全接受所到的包
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* -*-	Mode:C++; c-basic-offset:8; tab-width:8 -*- */
/*
 * Copyright (c) 1990-1997 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 the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the Computer Systems
 *	Engineering Group at Lawrence Berkeley Laboratory.
 * 4. Neither the name of the University nor of the Laboratory may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * @(#) $Header: /usr/src/mash/repository/vint/ns-2/trace.cc,v 1.58 1999/03/13 03:53:10 haoboy Exp $ (LBL)
 */

#include <stdio.h>
#include <stdlib.h>
#include "packet.h"
#include "ip.h"
#include "tcp.h"
#include "rtp.h"
#include "srm.h"
#include "flags.h"
#include "address.h"
#include "trace.h"
#include "Temporary_class.h"

const double Trace::PRECISION = 1.0e+6; 

class TraceClass : public TclClass {
public:
	TraceClass() : TclClass("Trace") { }
	TclObject* create(int argc, const char*const* argv) {
		if (argc >= 5)
			return (new Trace(*argv[4]));
		return 0;
	}
} trace_class;


Trace::Trace(int type)
	: Connector(), type_(type), src_(0), dst_(0), channel_(0), callback_(0)
#ifdef NAM_TRACE
	, namChan_(0)
#endif
{
	bind("src_", (int*)&src_);
	bind("dst_", (int*)&dst_);
	bind("callback_", &callback_);
	bind("show_tcphdr_", &show_tcphdr_);

#ifdef OFF_HDR
	bind("off_ip_", &off_ip_);
	bind("off_tcp_", &off_tcp_);
	bind("off_rtp_", &off_rtp_);
	bind("off_srm_", &off_srm_);
#endif

        //begin archana krishna
          bind("off_cmn_", &off_cmn_);
          bind("off_ip_", &off_ip_);
          bind("off_rtp_", &off_rtp_);
          bind("bandwidth_", &bandwidth_);
          bind("congest1_", &congest1_);
          bind("congest2_", &congest2_);

          if(measure == NULL)
          {
            measure = new Measure[NUMOFPACKS];
          }
        //end archana krishna
}

Trace::~Trace()
{
  //begin archanakrishna
    delete [] measure;
  //end archanakrishna

}

/*
 * $trace detach
 * $trace flush
 * $trace attach $fileID
 */
int Trace::command(int argc, const char*const* argv)
{
	Tcl& tcl = Tcl::instance();
	if (argc == 2) {
		if (strcmp(argv[1], "detach") == 0) {
			channel_ = 0;
#ifdef NAM_TRACE
			namChan_ = 0;
#endif
			return (TCL_OK);
		}
		if (strcmp(argv[1], "flush") == 0) {
#ifdef NAM_TRACE
			if (channel_ != 0) 
				Tcl_Flush(channel_);
			if (namChan_ != 0)
				Tcl_Flush(namChan_);
#else
			Tcl_Flush(channel_);
#endif
			return (TCL_OK);
		}
	} else if (argc == 3) {
		if (strcmp(argv[1], "annotate") == 0) {
			if (channel_ != 0)
				annotate(argv[2]);
			return (TCL_OK);
		}
		if (strcmp(argv[1], "attach") == 0) {
			int mode;
			const char* id = argv[2];
			channel_ = Tcl_GetChannel(tcl.interp(), (char*)id,
						  &mode);
			if (channel_ == 0) {
				tcl.resultf("trace: can't attach %s for writing", id);
				return (TCL_ERROR);
			}
			return (TCL_OK);
		}
#ifdef NAM_TRACE
		if (strcmp(argv[1], "namattach") == 0) {
			int mode;
			const char* id = argv[2];
			namChan_ = Tcl_GetChannel(tcl.interp(), (char*)id,
						  &mode);
			if (namChan_ == 0) {
				tcl.resultf("trace: can't attach %s for writing", id);
				return (TCL_ERROR);
			}
			return (TCL_OK);
		}
		if (strcmp(argv[1], "ntrace") == 0) {
			if (namChan_ != 0) 
				write_nam_trace(argv[2]);
			return (TCL_OK);
		}
#endif
	}
	return (Connector::command(argc, argv));
}

#ifdef NAM_TRACE

void Trace::write_nam_trace(const char *s)
{
	sprintf(nwrk_, "%s", s);
	namdump();
}
#endif

void Trace::annotate(const char* s)
{
	sprintf(wrk_, "v %g eval {set sim_annotation {%s}}", 
		round(Scheduler::instance().clock()), s);
	dump();
	sprintf(nwrk_, "v -t %.17g sim_annotation %g %s", 
		Scheduler::instance().clock(), 
		Scheduler::instance().clock(), s);
	namdump();
}

char* srm_names[] = {
        SRM_NAMES
};

// this function should retain some backward-compatibility, so that
// scripts don't break.
void Trace::format(int tt, int s, int d, Packet* p)
{
#ifdef OFF_HDR
	hdr_cmn *th = (hdr_cmn*)p->access(off_cmn_);
	hdr_ip *iph = (hdr_ip*)p->access(off_ip_);
	hdr_tcp *tcph = (hdr_tcp*)p->access(off_tcp_);
	hdr_rtp *rh = (hdr_rtp*)p->access(off_rtp_);
	hdr_srm *sh = (hdr_srm*)p->access(off_srm_); 
#else
	hdr_cmn *th = hdr_cmn::access(p);
	hdr_ip *iph = hdr_ip::access(p);
	hdr_tcp *tcph = hdr_tcp::access(p);
	hdr_rtp *rh = hdr_rtp::access(p);
	hdr_srm *sh = hdr_srm::access(p); 
#endif
	const char* sname = "null";

	packet_t t = th->ptype();
	const char* name = packet_info.name(t);

        /* SRM-specific */
	if (strcmp(name,"SRM") == 0 || strcmp(name,"cbr") == 0 || strcmp(name,"udp") == 0) {
            if ( sh->type() < 5 && sh->type() > 0 ) {
	        sname = srm_names[sh->type()];
	    }
	}

	if (name == 0)
		abort();

	int seqno;
	/* XXX */
	/* UDP's now have seqno's too */
	if (t == PT_RTP || t == PT_CBR || t == PT_UDP || t == PT_EXP ||
	    t == PT_PARETO)
		seqno = rh->seqno();
	else if (t == PT_TCP || t == PT_ACK || t == PT_HTTP || t == PT_FTP ||
	    t == PT_TELNET)
		seqno = tcph->seqno();
	else
		seqno = -1;
        /* 
         * When new flags are added, make sure to change NUMFLAGS
         * in trace.h
         */
        char flags[NUMFLAGS+1];
        for (int i = 0; i < NUMFLAGS; i++)
		flags[i] = '-';
        flags[NUMFLAGS] = 0;

#ifdef OFF_HDR
	hdr_flags* hf = (hdr_flags*)p->access(off_flags_);
#else
	hdr_flags* hf = hdr_flags::access(p);
#endif
	flags[0] = hf->ecn_ ? 'C' : '-';          // Ecn Echo
	flags[1] = hf->pri_ ? 'P' : '-'; 
	flags[2] = '-';
	flags[3] = hf->cong_action_ ? 'A' : '-';   // Congestion Action
	flags[4] = hf->ecn_to_echo_ ? 'E' : '-';   // Congestion Experienced
	flags[5] = hf->fs_ ? 'F' : '-';
	flags[6] = hf->ecn_capable_ ? 'N' : '-';
	
#ifdef notdef
	flags[1] = (iph->flags() & PF_PRI) ? 'P' : '-';
	flags[2] = (iph->flags() & PF_USR1) ? '1' : '-';
	flags[3] = (iph->flags() & PF_USR2) ? '2' : '-';
	flags[5] = 0;
#endif
	char *src_nodeaddr = Address::instance().print_nodeaddr(iph->src());
	char *src_portaddr = Address::instance().print_portaddr(iph->src());
	char *dst_nodeaddr = Address::instance().print_nodeaddr(iph->dst());
	char *dst_portaddr = Address::instance().print_portaddr(iph->dst());

	if (!show_tcphdr_) {
                sprintf(wrk_, "%c %12.7f %d %d %s %d %s %d %s%s %s%s %d %d",
			tt,
			round(Scheduler::instance().clock()),
			s,
			d,
			name,
			th->size(),
			flags,
			iph->flowid() /* was p->class_ */,
			src_nodeaddr,
			src_portaddr,
			dst_nodeaddr,
			dst_portaddr,
			seqno,
			th->uid() /* was p->uid_ */);
	} else {
		sprintf(wrk_, 
			"%c %g %d %d %s %d %s %d %s%s %s%s %d %d %d 0x%x %d %d",
			tt,
			round(Scheduler::instance().clock()),
			s,
			d,
			name,
			th->size(),
			flags,
			iph->flowid(), /* was p->class_ */
			src_nodeaddr,
			src_portaddr,
			dst_nodeaddr,
			dst_portaddr,
			seqno,
			th->uid(), /* was p->uid_ */
			tcph->ackno(),

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲电影在线| 一区二区三区四区视频精品免费| 亚洲女人的天堂| 94色蜜桃网一区二区三区| 精品国产1区二区| 黄色日韩网站视频| 久久精品亚洲国产奇米99| 麻豆精品蜜桃视频网站| 国产99久久久精品| 亚洲天堂免费看| 成人不卡免费av| 国产精品亲子伦对白| 国产成+人+日韩+欧美+亚洲| 中文字幕五月欧美| 一本大道久久a久久精品综合| 亚洲视频香蕉人妖| 在线观看视频一区| 国产精品久久国产精麻豆99网站| 成人高清视频在线观看| 国产精品毛片久久久久久久| 国产aⅴ综合色| 国产三级欧美三级日产三级99| 成人一区二区三区视频在线观看 | 粉嫩av一区二区三区粉嫩| 久久久久久电影| 色老综合老女人久久久| 亚洲永久免费av| 日韩欧美一区二区久久婷婷| 久久99精品一区二区三区| 国产精品日日摸夜夜摸av| 91美女在线观看| 午夜久久久久久电影| 91麻豆精品国产91久久久久久久久 | 日本视频免费一区| 精品久久人人做人人爽| 风间由美中文字幕在线看视频国产欧美| wwww国产精品欧美| 91女人视频在线观看| 亚洲线精品一区二区三区八戒| 91精品国产综合久久福利软件| 免费观看一级特黄欧美大片| 国产日韩影视精品| 中文字幕欧美日韩一区| 91老师国产黑色丝袜在线| 久久99蜜桃精品| 成人免费在线视频观看| 欧美日韩国产精品自在自线| 国产精品一区二区久久精品爱涩 | 日韩一区二区在线观看视频| 国产激情视频一区二区三区欧美| 亚洲视频在线观看一区| 欧美美女激情18p| 成人亚洲精品久久久久软件| 亚洲综合视频在线观看| 26uuu另类欧美| 3atv一区二区三区| 色综合久久天天| 国内精品久久久久影院薰衣草| 中文字幕在线观看不卡| 久久久久免费观看| 欧美另类高清zo欧美| 懂色av一区二区三区免费观看 | 日韩欧美在线一区二区三区| 色欧美片视频在线观看| 国产乱理伦片在线观看夜一区| 亚洲精品国产成人久久av盗摄| 精品久久久久久久久久久久久久久 | 亚洲精品综合在线| 日韩视频一区二区在线观看| 日本精品一区二区三区高清| 黄色小说综合网站| 热久久一区二区| 久久综合色天天久久综合图片| 国产麻豆精品theporn| 亚洲一区二区影院| 日韩精品专区在线| 欧美精品黑人性xxxx| 99精品黄色片免费大全| 国产成人免费视频一区| 久久爱另类一区二区小说| 亚洲bt欧美bt精品| 一区二区三区加勒比av| 亚洲一区二区在线视频| 亚洲视频中文字幕| 中文字幕综合网| 久久久亚洲精品一区二区三区| 精品va天堂亚洲国产| 日韩一级视频免费观看在线| 欧美日韩国产精品自在自线| 色婷婷av一区二区三区软件 | 欧美日韩免费一区二区三区视频| 9久草视频在线视频精品| 成人激情综合网站| 成人激情校园春色| av男人天堂一区| www.日本不卡| 波多野结衣亚洲| 在线综合亚洲欧美在线视频| 91精品黄色片免费大全| 欧美日韩国产乱码电影| 欧美日韩国产123区| 欧美日韩在线免费视频| 欧美一区二区福利在线| 欧美一区二区三区四区视频| 91麻豆精品国产自产在线观看一区 | 91精品国产免费| 日韩免费高清视频| 亚洲精品一区二区三区蜜桃下载 | 亚洲视频香蕉人妖| 亚洲欧美电影一区二区| 日韩一区精品字幕| 国产一区啦啦啦在线观看| 波多野结衣一区二区三区| 欧美日韩一区二区电影| xf在线a精品一区二区视频网站| 中文字幕 久热精品 视频在线| 一区二区三区四区视频精品免费| 蜜桃视频在线观看一区二区| 成人免费高清在线| 911精品国产一区二区在线| 久久―日本道色综合久久| 一片黄亚洲嫩模| 国产乱淫av一区二区三区| 精品污污网站免费看| 国产亚洲欧美色| 亚洲成av人片在线观看无码| 国产美女精品一区二区三区| 在线观看国产日韩| 国产日韩欧美a| 日韩和欧美一区二区三区| 成人精品免费视频| 日韩视频中午一区| 亚洲在线一区二区三区| 国模大尺度一区二区三区| 欧美日韩国产综合草草| 中文字幕在线观看不卡视频| 麻豆精品一区二区av白丝在线| 91色porny在线视频| 久久先锋影音av鲁色资源网| 午夜精品久久久久影视| 91在线视频免费91| 久久久精品影视| 久久9热精品视频| 欧美日韩另类一区| 亚洲精品视频在线观看网站| 国产伦精品一区二区三区在线观看 | 欧美日韩激情一区二区三区| 中文字幕一区二区三区四区不卡| 麻豆91小视频| 欧美高清激情brazzers| 一区二区三区在线不卡| 成人午夜电影久久影院| 欧美不卡一区二区| 丝袜亚洲精品中文字幕一区| 91高清视频在线| 亚洲免费观看在线观看| 成人av网址在线| 欧美韩国一区二区| 国产精品 欧美精品| 精品国产123| 久久99国内精品| 婷婷夜色潮精品综合在线| 91美女蜜桃在线| 亚洲天堂av一区| 色综合网站在线| 亚洲色图19p| 色域天天综合网| 一区二区三区四区视频精品免费| 91看片淫黄大片一级在线观看| 综合久久久久久久| 91网上在线视频| 夜夜嗨av一区二区三区中文字幕 | 91麻豆精品国产91久久久资源速度 | 成人一区二区三区视频在线观看| 久久综合色天天久久综合图片| 激情六月婷婷久久| 久久久久国产精品人| 国产电影精品久久禁18| 欧美国产日本视频| 不卡av免费在线观看| 亚洲欧美日韩一区| 欧美日韩中文精品| 麻豆中文一区二区| 久久久国产精品午夜一区ai换脸| 国产精品综合二区| 国产精品嫩草99a| 91女厕偷拍女厕偷拍高清| 亚洲一区二区三区四区在线| 欧美日韩亚洲综合在线| 日韩精品福利网| 精品国产乱码久久久久久牛牛| 国产乱码精品一区二区三区五月婷| 国产精品入口麻豆原神| 欧美性猛交xxxx乱大交退制版| 亚洲va在线va天堂| 精品国产免费人成电影在线观看四季| 成人性生交大合| 亚洲观看高清完整版在线观看| 日韩一区二区三区视频| 高清日韩电视剧大全免费|