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

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

?? snmp.c

?? ifstat源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * ifstat - InterFace STATistics * Copyright (c) 2001, Ga雔 Roualland <gael.roualland@dial.oleane.com> * * This program 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. * * This program 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 program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: snmp.c,v 1.26 2003/05/06 23:30:02 gael Exp $ */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdlib.h>#include <stdio.h>#include "ifstat.h"#ifdef USE_SNMP#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#ifdef HAVE_NET_SNMP#include <net-snmp/net-snmp-config.h>#include <net-snmp/net-snmp-includes.h>#else#include <ucd-snmp/ucd-snmp-config.h>#include <ucd-snmp/ucd-snmp-includes.h>#endif#include "snmp.h"/* define this to use ifcount as a hint to discover interfaces   does not work well with routers that do not number interfaces sequentially,   but is faster that the ifIndex walk used otherwise */#undef USE_SNMP_IFCOUNTstatic char *snmp_sess_errstring(struct snmp_session *ss) {  char *res;  snmp_error(ss, NULL, NULL, &res);  return res;}#ifdef USE_SNMP_IFCOUNT/* report the value interfaces.ifNumber.0, actually the number of interfaces */static int snmp_get_ifcount(struct snmp_session *ss) {  int nifaces = -1;  oid ifcount[] = { 1, 3, 6, 1, 2, 1, 2, 1, 0 };  struct snmp_pdu *pdu;  struct snmp_pdu *response = NULL;  int status;  if ((pdu = snmp_pdu_create(SNMP_MSG_GET)) == NULL) {    ifstat_error("snmp_pdu_create: %s", snmp_api_errstring(snmp_errno));    return -1;  }  snmp_add_null_var(pdu, ifcount, sizeof(ifcount) / sizeof(oid));  if ((status = snmp_synch_response(ss, pdu, &response)) != STAT_SUCCESS ||      response->errstat != SNMP_ERR_NOERROR ||      response->variables == NULL ||      response->variables->type != ASN_INTEGER) {    if (status == STAT_SUCCESS)      ifstat_error("snmp: Error: %s", snmp_errstring(response->errstat));    else      ifstat_error("snmpget(interfaces.ifNumber.0): %s", snmp_sess_errstring(ss));    if (response)      snmp_free_pdu(response);    return -1;  }  nifaces = *(response->variables->val.integer);  snmp_free_pdu(response);      if (nifaces < 0)    return -1;  return nifaces;}#endifstatic int snmp_get_nextif(struct snmp_session *ss, int index) {  oid ifindex[] = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 1, 0 };  int len = sizeof(ifindex) / sizeof(oid);  struct snmp_pdu *pdu;  struct snmp_pdu *response = NULL;  struct variable_list *vars;  int status;  if (index >= 0)    ifindex[len - 1] = index;  if ((pdu = snmp_pdu_create(SNMP_MSG_GETNEXT)) == NULL) {    ifstat_error("snmp_pdu_create: %s", snmp_api_errstring(snmp_errno));    return -1;  }  snmp_add_null_var(pdu, ifindex, (index < 0) ? len - 1 : len);  if ((status = snmp_synch_response(ss, pdu, &response)) != STAT_SUCCESS ||      response->errstat != SNMP_ERR_NOERROR ||      response->variables == NULL) {    if (status == STAT_SUCCESS)       ifstat_error("snmp: Error: %s", snmp_errstring(response->errstat));    else      ifstat_error("snmpgetnext(interfaces.ifTable.ifEntry.ifIndex...): %s",		   snmp_sess_errstring(ss));    if (response != NULL)      snmp_free_pdu(response);    return -1;  }  for(vars = response->variables; vars; vars = vars->next_variable) {    /* check that the variable is under the base oid */    if (vars->name_length != len)      continue;    if (memcmp(ifindex, vars->name, sizeof(ifindex) - sizeof(oid)) != 0)      continue;    index = vars->name[vars->name_length - 1];    snmp_free_pdu(response);    return index;  }  snmp_free_pdu(response);  return -1;}#define S_IFNAMEMAX 64struct ifsnmp {  char name[S_IFNAMEMAX];  unsigned long bout, bin;  int flags, index;};#define S_UP         1#define S_BIN        2#define S_BOUT       4#define S_LOOP       8#define S_INVALID   16#define S_NUMNAME   32#define S_IFNAME    64  /* fill a struct ifsnmp buffer of selected information (flags) for   interface index to (index + nifaces - 1). ifsnmp must be large   enough, and nifaces shouldb'nt too large since some devices have   limited capability for large responses...   In case we get a unknown name answer and we're   polling several interfaces at once, interfaces will be polled   again individually to try to solve the problem.*/static int snmp_get_ifinfos(struct snmp_session *ss, int nifaces,			    int flags, struct ifsnmp * ifsnmp, int *toobig) {  struct snmp_pdu *pdu, *response = NULL;  oid ifinfo[] = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 0, 0 }; /* interfaces.ifTable.ifEntry.x.n */#define ifDescr 2#define ifType 3  #define ifOperStatus 8  #define ifInOctets 10#define ifOutOctets 16  struct variable_list *vars;  int i, status;   if (nifaces <= 0)    return 0;    if ((pdu = snmp_pdu_create(SNMP_MSG_GET)) == NULL) {    ifstat_error("snmp_pdu_create: %s", snmp_api_errstring(snmp_errno));    return 0;  }  for (i = 0; i < nifaces; i++) {    ifsnmp[i].flags = 0;    ifsnmp[i].name[0] = 0;    /* set interface index */    ifinfo[10] = ifsnmp[i].index;    if (flags & S_NUMNAME) {      sprintf(ifsnmp[i].name, "if%d", ifsnmp[i].index);    } else if (flags & S_IFNAME) {      /* require descr */      ifinfo[9] = ifDescr;      snmp_add_null_var(pdu, ifinfo, sizeof(ifinfo) / sizeof(oid));    }        /* then optional data */    if (flags & S_UP) {      ifinfo[9] = ifOperStatus;      snmp_add_null_var(pdu, ifinfo, sizeof(ifinfo) / sizeof(oid));    }    if (flags & S_BOUT) {      ifinfo[9] = ifOutOctets;      snmp_add_null_var(pdu, ifinfo, sizeof(ifinfo) / sizeof(oid));    }    if (flags & S_BIN) {      ifinfo[9] = ifInOctets;      snmp_add_null_var(pdu, ifinfo, sizeof(ifinfo) / sizeof(oid));    }    if (flags & S_LOOP) {      ifinfo[9] = ifType;      snmp_add_null_var(pdu, ifinfo, sizeof(ifinfo) / sizeof(oid));    }  }      if ((status = snmp_synch_response(ss, pdu, &response)) != STAT_SUCCESS ||      response->errstat != SNMP_ERR_NOERROR ||      response->variables == NULL) {    if (status == STAT_SUCCESS) {      if (response->errstat != SNMP_ERR_NOSUCHNAME &&	  response->errstat != SNMP_ERR_TOOBIG)	ifstat_error("snmp: Error: %s", snmp_errstring(response->errstat));      else if (nifaces > 1) {	/* maybe only one of the interface is broken or too many interfaces polled at once	   -- repoll inetrface per interface */	if (response->errstat == SNMP_ERR_TOOBIG && toobig != NULL)	  (*toobig)++;	if (response != NULL)	  snmp_free_pdu(response);	status = 0;	for (i = 0; i < nifaces; i++) {	  if (!snmp_get_ifinfos(ss, 1, flags, ifsnmp + i, NULL))	    ifsnmp[i].flags |= S_INVALID;	  else	    status = 1;	}	return status;      }    } else      ifstat_error("snmpget(interfaces.ifTable.ifEntry...): %s", snmp_sess_errstring(ss));    if (response != NULL)      snmp_free_pdu(response);    return 0;  }  for(vars = response->variables; vars; vars = vars->next_variable) {    /* check that the variable is under the base oid */    if (memcmp(ifinfo, vars->name, sizeof(ifinfo) - 2 * sizeof(oid)) != 0)      continue;    for(i = 0; i < nifaces; i++) {      if (ifsnmp[i].index == vars->name[10])	break;    }    if (i == nifaces) /* not found */      continue;    switch (vars->name[9]) {    case ifDescr:      if (vars->type == ASN_OCTET_STR) {        int count = vars->val_len;        if (count >= sizeof(ifsnmp[i].name))          count = sizeof(ifsnmp[i].name) - 1;	strncpy(ifsnmp[i].name, vars->val.string, count);        ifsnmp[i].name[count] = '\0';      }      break;    case ifOperStatus:      if (vars->type == ASN_INTEGER) {	if (*(vars->val.integer) == 1) /* up */	  ifsnmp[i].flags |= S_UP;      }      break;    case ifType:      if (vars->type == ASN_INTEGER) {	if (*(vars->val.integer) == 24) /* softwareLoopback */	  ifsnmp[i].flags |= S_LOOP;      }      break;    case ifInOctets:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久.com| 欧日韩精品视频| 日韩欧美综合一区| 午夜欧美大尺度福利影院在线看| 在线观看91视频| 亚洲va韩国va欧美va精品 | 日韩女优av电影| 久久se精品一区二区| 精品福利av导航| 国产一区二区三区四| 欧美国产在线观看| 91社区在线播放| 五月天激情小说综合| 91精品国产综合久久久久久| 美国毛片一区二区| 国产色爱av资源综合区| 91亚洲男人天堂| 青草国产精品久久久久久| 国产三级精品三级| 欧洲亚洲国产日韩| 久久国产乱子精品免费女| 久久精品免费在线观看| 在线观看日韩国产| 3d成人h动漫网站入口| 极品美女销魂一区二区三区| 国产精品毛片久久久久久久| 欧美在线观看一二区| 久久成人免费电影| 一区在线观看免费| 欧美一区二区日韩| 不卡高清视频专区| 日韩精品每日更新| 成人免费一区二区三区在线观看| 欧美高清视频在线高清观看mv色露露十八 | 日韩二区三区四区| 国产精品美女久久久久久久久久久 | 天堂一区二区在线| 国产视频亚洲色图| 6080日韩午夜伦伦午夜伦| 国产盗摄精品一区二区三区在线 | 欧美亚洲自拍偷拍| 国产一区不卡在线| 亚欧色一区w666天堂| 国产精品毛片久久久久久久| 日韩一区二区三区四区| 色综合咪咪久久| 国产风韵犹存在线视精品| 亚洲高清免费视频| 一区二区三区欧美久久| 男人的天堂久久精品| 91麻豆国产精品久久| 久久99精品国产麻豆不卡| 亚洲一区二区三区四区在线观看 | 欧美一区二区久久| 亚洲久本草在线中文字幕| 日韩免费看网站| 成人网男人的天堂| 久久99日本精品| 色噜噜狠狠成人网p站| 久久国产精品区| 五月天丁香久久| 亚洲欧洲精品一区二区精品久久久| 日韩欧美色电影| 678五月天丁香亚洲综合网| 色综合久久天天| 白白色 亚洲乱淫| 国产一区二区三区蝌蚪| 日韩高清不卡在线| 亚洲一级二级三级| 国产精品初高中害羞小美女文| 日韩精品一区二区在线观看| 日韩一本二本av| 欧美日韩电影在线| 欧美三电影在线| 欧美少妇xxx| 在线视频一区二区三区| 91一区二区三区在线观看| av一区二区不卡| 99re这里只有精品视频首页| 成人av在线播放网站| 成人av免费在线播放| fc2成人免费人成在线观看播放| 国产高清不卡二三区| 国产精品一区一区三区| 国产精品资源站在线| 国产麻豆精品久久一二三| 国产麻豆欧美日韩一区| 国产丶欧美丶日本不卡视频| 成人免费视频视频在线观看免费| 国产精品1区2区| 成人性生交大片免费看中文网站| 国产成人免费xxxxxxxx| 国产成人精品一区二区三区四区 | 亚洲精品视频免费观看| 亚洲欧洲日韩综合一区二区| 一区二区在线观看免费视频播放| 亚洲精品ww久久久久久p站| 一区二区三区四区视频精品免费 | 26uuu国产在线精品一区二区| 精品国产电影一区二区| 久久久99久久| 亚洲欧美日韩久久| 亚洲夂夂婷婷色拍ww47| 欧美午夜在线一二页| 7799精品视频| 国产色产综合色产在线视频| 亚洲免费av在线| 日韩国产欧美在线观看| 麻豆精品在线播放| 国产精品1区二区.| 在线观看欧美精品| 欧美一级一级性生活免费录像| 亚洲精品一线二线三线| 国产精品国产三级国产a| 亚洲高清不卡在线观看| 精油按摩中文字幕久久| 99久久精品久久久久久清纯| 在线不卡的av| 日本一区二区成人在线| 亚洲精品亚洲人成人网在线播放| 久久国产精品免费| 99re视频精品| 精品三级在线观看| 18欧美亚洲精品| 久久精品国产精品亚洲精品 | 色诱视频网站一区| 91精品一区二区三区在线观看| 国产亚洲欧美一级| 亚洲综合成人在线视频| 国产在线视频不卡二| 欧美在线制服丝袜| 久久先锋影音av| 亚洲va欧美va人人爽午夜| 国产成人精品综合在线观看 | 精品女同一区二区| 一色屋精品亚洲香蕉网站| 欧美福利一区二区| 中文字幕av一区二区三区高| 三级欧美韩日大片在线看| 成人精品在线视频观看| 欧美一区二区三区免费观看视频 | 欧美日韩精品欧美日韩精品| 国产精品无人区| 久久99久久精品| 欧美日免费三级在线| 亚洲色图在线播放| 国产毛片精品一区| 91精品国产综合久久福利软件 | 午夜精品一区二区三区电影天堂| 成人爱爱电影网址| 久久久91精品国产一区二区三区| 日韩成人精品在线观看| 色婷婷av久久久久久久| 中文字幕欧美一区| 国产不卡在线视频| 日韩精品在线一区二区| 五月激情丁香一区二区三区| 日本久久一区二区| 亚洲欧美一区二区三区久本道91| 国产在线乱码一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 一片黄亚洲嫩模| 99久久99久久久精品齐齐| 国产午夜精品久久久久久免费视| 韩国视频一区二区| 日韩欧美国产精品一区| 丝袜亚洲精品中文字幕一区| 欧美日韩成人高清| 丝袜亚洲另类欧美综合| 在线播放91灌醉迷j高跟美女| 亚洲va欧美va人人爽午夜 | 欧美高清hd18日本| 天天亚洲美女在线视频| 欧美嫩在线观看| 日本视频在线一区| 欧美一区二区三区性视频| 亚洲影院免费观看| eeuss国产一区二区三区| 欧美人与性动xxxx| 亚洲视频每日更新| 国内外精品视频| 强制捆绑调教一区二区| 麻豆91在线播放免费| 欧美电影一区二区| 麻豆免费看一区二区三区| 4438x成人网最大色成网站| 丝袜亚洲另类欧美综合| 欧美日韩免费电影| 青青国产91久久久久久| 一本久久a久久免费精品不卡| 中文字幕亚洲精品在线观看| 一本久久综合亚洲鲁鲁五月天| 亚洲色图欧美偷拍| 欧美日韩高清一区二区不卡| 亚洲影院在线观看| 精品视频在线看| 狠狠色丁香久久婷婷综合丁香| 欧美v亚洲v综合ⅴ国产v| 高清视频一区二区| 亚洲精品中文在线|