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

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

?? bandwidth.c

?? 網絡流量采集及分析軟件
?? C
字號:
/*! \file  bandwidth.c    Copyright 2003-2004 Fraunhofer Institute for Open Communication Systems (FOKUS),                        Berlin, Germany    This file is part of Network Measurement and Accounting System (NETMATE).    NETMATE is free software; you can redistribute it and/or modify     it under the terms of the GNU General Public License as published by     the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    NETMATE is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this software; if not, write to the Free Software     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA    Description:    action module for basic accounting plus bandwidth calculation and     intermediate counter logging (writes all collected counters on next export)    $Id: bandwidth.c,v 1.1.1.1 2004/12/23 05:52:36 s_zander Exp $*/#include "config.h"#include <stdio.h>#include "ProcModule.h"#include "arpa/inet.h"#include <sys/types.h>#include <time.h>     const int COUNTCHUNK = 20;    /* new entries per realloc *//*  defines timer for making 'counter snapshot'*/timers_t timers[] = {    /* handle, ival_msec, flags */    {       1,  1000 * 0, TM_RECURRING },    /*         ival == 0 means no timeout between collections by default */    TIMER_END};typeInfo_t exportInfo[] = {     { LIST,   "counters" },    { UINT32, "packets"       },    { UINT32, "bytes"         },    { UINT32, "first_time"    },    { UINT32, "first_time_us" },    { UINT32, "last_time"     },    { UINT32, "last_time_us"  },    { UINT32, "packet_rate"   },    { UINT32, "bandwidth"     },    LIST_END,    EXPORT_END};/* counter snapshot record (one record per snapshot is stored in a list) */typedef struct {    long long packets;    /* number of packets received */    long long bytes;      /* number of bytes received   */    struct timeval first; /* timestamp of first packet received */    struct timeval last;  /* timestamp of last packet received  */    long int packet_bw;   /* bandwidth in packets per second */    long int bandwidth;   /* bandwidth in bytes per second */} measData_t;/* per task flow record information */typedef struct {    long int  export_ts;   /* timestamp of measurement start */    int       numSets;    /* number of records currently stored */    int       maxSets;    /* maximum number of datasets currently storable (without resize) */    measData_t curr;      /* current set of (active) counters for last interval*/    measData_t *dataSets; /* dynamic array for storing intermediate couters */    timers_t currTimers[ sizeof(timers) / sizeof(timers[0]) ];} accData_t;struct timeval zerotime = {0,0};static char* expData;static unsigned int   expDataSize;int initModule(){    expDataSize = sizeof(measData_t) + 20;    expData = (char*) malloc(expDataSize);        return 0;}int destroyModule(){    free( expData );        return 0;}inline void resetCurrent( accData_t *data ){    data->curr.packets = 0;    data->curr.bytes = 0;    data->curr.first = zerotime;    data->curr.last = zerotime;    data->curr.packet_bw = 0;    data->curr.bandwidth = 0;}void appendCounters(accData_t *data ){    if (data->currTimers[0].ival_msec == 0) {	return;    }        if (data->numSets == data->maxSets ) {	/* fprintf( stderr, "allocating %d sets\n", (data->maxSets + COUNTCHUNK) ); */	data->dataSets = (measData_t*) realloc( data->dataSets, (data->maxSets + COUNTCHUNK)*sizeof(measData_t) );	data->maxSets += COUNTCHUNK;     }        /* calculate bandwidth for this collection interval */    data->curr.bandwidth = data->curr.bytes * 1000 / data->currTimers[0].ival_msec;    data->curr.packet_bw = data->curr.packets * 1000 / data->currTimers[0].ival_msec;        memcpy( &(data->dataSets[data->numSets++]), &(data->curr), sizeof(measData_t) );}int processPacket( char *packet, metaData_t *meta, void *flowdata ){    accData_t *data = flowdata;    /* save timestamp from first incoming packet */    if (data->curr.packets == 0) {        data->curr.first.tv_sec = meta->tv_sec;        data->curr.first.tv_usec = meta->tv_usec;    }    /* save timestamp for last incoming packet */    data->curr.last.tv_sec = meta->tv_sec;    data->curr.last.tv_usec = meta->tv_usec;    /* count packets and account packet volume (including link layer) */    data->curr.packets += 1;    data->curr.bytes   += meta->len;    return 0;}int initFlowRec( configParam_t *params, void **flowdata ){    accData_t *data;    data = malloc( sizeof(accData_t) );    if (data == NULL ) {        return -1;    }        data->numSets = 0;    data->maxSets = 0;    data->dataSets = NULL;    data->export_ts = time(NULL);        /* init current block of counters */    resetCurrent( data );    /* copy default timers to current timers array for a specific task */    memcpy(data->currTimers, timers, sizeof(timers));    while (params[0].name != NULL) {        if (!strcmp(params[0].name, "Interval")) {            int a = atoi(params[0].value);            if (a > 0) {                data->currTimers[0].ival_msec = 1000 * a;#ifdef DEBUG		fprintf( stderr, "bandwidth module: setting snapshot timer to %d secs\n", a );#endif            }        }        params++;    }        *flowdata = data;    return 0;}int resetFlowRec( void *flowdata ){    return 0;}int destroyFlowRec( void *flowdata ){  accData_t *data = flowdata;  free( data->dataSets );  free( data );  return 0;}int exportData( void **exp, int *len, void *flowdata ){    accData_t *data = flowdata;    measData_t *curr;    int i;    /* if no intermediate snapshots were taken then only export current pointers */    if (data->numSets == 0) {	long int tstamp = time(NULL);	/* calculate bandwidth for this collection interval */	if (tstamp == data->export_ts) { // avoid division by zero	  data->curr.bandwidth = 0;	  data->curr.packet_bw = 0;	} else {	  data->curr.bandwidth = data->curr.bytes / (tstamp - data->export_ts);	  data->curr.packet_bw = data->curr.packets / (tstamp -data->export_ts);	}	STARTEXPORT(expData);	ADD_LIST(1); /* one row of data */        ADD_UINT32( data->curr.packets       );        ADD_UINT32( data->curr.bytes         );        ADD_UINT32( data->curr.first.tv_sec  );        ADD_UINT32( data->curr.first.tv_usec );        ADD_UINT32( data->curr.last.tv_sec   );        ADD_UINT32( data->curr.last.tv_usec  );        ADD_UINT32( data->curr.packet_bw     );        ADD_UINT32( data->curr.bandwidth     );	END_LIST();	ENDEXPORT( exp, len );	resetCurrent(data);       /* reset counters */	data->export_ts = tstamp; /* remember time of last export */	return 0;    }    /* else export stored snapshots */    if (expDataSize < data->numSets * sizeof(measData_t) + 20) {        expDataSize = data->numSets * sizeof(measData_t) + 20;        expData = (char*) realloc( expData, expDataSize );    }    STARTEXPORT( expData );    ADD_LIST( data->numSets );        curr = data->dataSets;    for( i = 0; i<data->numSets; i++ ) {                ADD_UINT32( curr->packets       );        ADD_UINT32( curr->bytes         );        ADD_UINT32( curr->first.tv_sec  );        ADD_UINT32( curr->first.tv_usec );        ADD_UINT32( curr->last.tv_sec   );        ADD_UINT32( curr->last.tv_usec  );        ADD_UINT32( curr->packet_bw     );        ADD_UINT32( curr->bandwidth     );                curr++;    }    END_LIST();    ENDEXPORT( exp, len );    data->numSets = 0;    return 0;}int dumpData( char *string, void *flowdata ){    return 0;}char* getModuleInfo(int i){    /* fprintf( stderr, "count : getModuleInfo(%d)\n",i ); */    switch(i) {    case I_MODNAME:    return "bandwidth";    case I_VERSION:    return "2.0";    case I_CREATED:    return "2002/12/19";    case I_MODIFIED:   return "2003/09/08";    case I_BRIEF:      return "intermediate accounting (packets+volume) "                         "plus bandwidth calculation";    case I_VERBOSE:    return "count packets, volume, save first and last "                         "time, packet and volume bandwidth";    case I_HTMLDOCS:   return "http://www.fokus.fhg.de/modules/bandwidth.html";    case I_PARAMS:     return "Interval[int] : store counters every [int] "                         "seconds";    case I_RESULTS:    return "results description = ...";    case I_AUTHOR:     return "Carsten Schmoll";    case I_AFFILI:     return "Fraunhofer Institute FOKUS, Germany";    case I_EMAIL:      return "schmoll@fokus.fraunhofer.de";    case I_HOMEPAGE:   return "http://homepage";    default: return NULL;    }}char* getErrorMsg( int code ){    return NULL;}int timeout( int timerID, void *flowdata ){    accData_t *data = (accData_t *)flowdata;#ifdef DEBUG    fprintf( stderr, "bandwidth: timeout(n = %d)\n", timerID );#endif    appendCounters(data);    resetCurrent(data);    return 0;}timers_t* getTimers( void *flowData ){    accData_t *data = (accData_t *)flowData;    /* return timers record if ival > 0, else return "no timers available" (NULL) */    return (data->currTimers[0].ival_msec > 0) ? data->currTimers : NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线成人午夜影院| 国产精品护士白丝一区av| 久久亚洲私人国产精品va媚药| 久久综合九色综合欧美98| 一二三区精品视频| 国产成人在线色| 日韩一区二区三区高清免费看看| 国产精品久久久久三级| 久草精品在线观看| 日韩天堂在线观看| 亚洲成在人线在线播放| 91麻豆国产福利在线观看| 久久在线观看免费| 久久精品国产精品亚洲红杏| 欧美日韩专区在线| 亚洲一区二区五区| 91麻豆精品秘密| 亚洲美女屁股眼交| www.成人网.com| 国产精品麻豆久久久| 国产一区二区91| 精品不卡在线视频| 国产一区二区在线电影| 日韩欧美国产精品| 久久99国内精品| 精品国产一二三| 久久国产视频网| 精品免费日韩av| 国产资源精品在线观看| 精品对白一区国产伦| 精品一区二区精品| 国产亚洲欧美日韩在线一区| 国产精品一区在线| 国产欧美一区二区精品性色超碰| 狠狠色丁香久久婷婷综合丁香| 欧美一区二区免费| 激情都市一区二区| 久久久99免费| 国产91精品一区二区| 中文字幕在线不卡视频| 91在线视频官网| 一区二区欧美精品| 欧美一区二区三区日韩| 激情图区综合网| 国产精品理论在线观看| 色8久久精品久久久久久蜜| 一区二区三区欧美视频| 欧美区一区二区三区| 日本一区中文字幕 | 久久众筹精品私拍模特| 国产麻豆精品在线| 最新国产の精品合集bt伙计| 色屁屁一区二区| 日日夜夜精品视频天天综合网| 日韩一区二区三区视频| 国产伦精一区二区三区| 亚洲三级电影网站| 欧美一区欧美二区| 欧美精品免费视频| 韩国在线一区二区| 91色九色蝌蚪| 国产日产欧产精品推荐色| 成人av网站免费观看| 一区二区三区欧美久久| 日韩久久久精品| 不卡的电影网站| 国产人妖乱国产精品人妖| 在线一区二区三区四区五区 | 欧洲视频一区二区| 麻豆国产一区二区| 国产精品剧情在线亚洲| 91精品久久久久久久久99蜜臂| 国产美女精品人人做人人爽| 亚洲一区二区三区美女| 久久久久国产成人精品亚洲午夜| 91污在线观看| 国产剧情一区在线| 亚洲一区二区黄色| 国产精品丝袜黑色高跟| 91精品欧美久久久久久动漫| 成人黄色av电影| 精品亚洲aⅴ乱码一区二区三区| 亚洲精品国产视频| 国产欧美日韩视频在线观看| 欧美一级片免费看| 日本韩国欧美一区| 国产不卡视频一区二区三区| 亚洲 欧美综合在线网络| 综合网在线视频| 久久精品一区二区三区av| 欧美日韩不卡一区| 91影院在线免费观看| 国产成人av影院| 久久精品国产精品青草| 婷婷亚洲久悠悠色悠在线播放| ...中文天堂在线一区| 久久久久久久网| 26uuu欧美| 日韩一级黄色片| 欧美日韩日本视频| 欧美日韩三级视频| 在线视频综合导航| 91最新地址在线播放| 成人精品国产福利| 国产不卡视频在线观看| 国产大片一区二区| 韩国精品免费视频| 韩国成人精品a∨在线观看| 另类欧美日韩国产在线| 全国精品久久少妇| 蜜桃av噜噜一区| 美国av一区二区| 精品一区二区免费在线观看| 久久se这里有精品| 国产专区欧美精品| 国产一区久久久| 丁香婷婷综合五月| 成人中文字幕电影| k8久久久一区二区三区| 色综合久久久久| 欧美日韩一级视频| 91精品国产aⅴ一区二区| 欧美一区二区三区四区五区| 欧美不卡在线视频| 国产婷婷色一区二区三区四区 | 亚洲精品五月天| 亚洲欧美日韩中文字幕一区二区三区| 中文字幕av一区二区三区免费看| 国产精品亲子乱子伦xxxx裸| 国产精品久久久久桃色tv| 亚洲品质自拍视频网站| 亚洲二区在线视频| 蜜桃免费网站一区二区三区| 国产乱码精品一区二区三 | 一本久久a久久免费精品不卡| 91亚洲精品久久久蜜桃网站| 日本高清成人免费播放| 欧美肥妇毛茸茸| 国产午夜亚洲精品羞羞网站| 国产精品久久久久久一区二区三区| 1000精品久久久久久久久| 亚洲高清免费在线| 国产电影一区二区三区| 色88888久久久久久影院野外| 91麻豆精品国产91久久久久久久久| 久久久久国产免费免费| 亚洲精品视频一区| 久久se这里有精品| 91浏览器打开| 欧美成人性战久久| 亚洲美腿欧美偷拍| 国产一区二区久久| 在线视频欧美精品| 精品国产髙清在线看国产毛片| 国产精品成人免费精品自在线观看| 麻豆91在线观看| 国模大尺度一区二区三区| 91亚洲精华国产精华精华液| 欧美一区二区三区免费视频 | 亚洲已满18点击进入久久| 人妖欧美一区二区| 色噜噜久久综合| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲黄色小视频| 国产精品88av| 日韩一级大片在线| 亚洲综合激情另类小说区| 国产乱码精品一区二区三区五月婷| 精品视频1区2区| 136国产福利精品导航| 精品一区二区在线看| 欧美写真视频网站| 国产精品五月天| 狠狠色丁香婷婷综合| 5566中文字幕一区二区电影| 国产精品国模大尺度视频| 国产在线精品免费| 51午夜精品国产| 亚洲午夜激情av| 色妹子一区二区| 亚洲国产精品高清| 国产精一区二区三区| 日韩一区二区三免费高清| 亚洲成a天堂v人片| 欧美性生交片4| 怡红院av一区二区三区| a美女胸又www黄视频久久| 国产清纯在线一区二区www| 极品美女销魂一区二区三区免费 | 国产成a人无v码亚洲福利| 欧美xxxxx牲另类人与| 日韩成人精品在线| 5858s免费视频成人| 日韩电影在线免费看| 日韩一区二区三区电影在线观看| 午夜在线成人av| 这里只有精品99re| 日韩高清中文字幕一区| 欧美精品xxxxbbbb| 日本伊人色综合网|