示例#1
0
/*
 *	Output /proc/net/netstat
 */
static int netstat_seq_show(struct seq_file *seq, void *v)
{
	int i;

	seq_puts(seq, "TcpExt:");
	for (i = 0; snmp4_net_list[i].name != NULL; i++)
		seq_printf(seq, " %s", snmp4_net_list[i].name);

	seq_puts(seq, "\nTcpExt:");
	for (i = 0; snmp4_net_list[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			   fold_field((void **) net_statistics, 
				      snmp4_net_list[i].entry));

	seq_puts(seq, "\nIpExt:");
	for (i = 0; snmp4_ipextstats_list[i].name != NULL; i++)
		seq_printf(seq, " %s", snmp4_ipextstats_list[i].name);

	seq_puts(seq, "\nIpExt:");
	for (i = 0; snmp4_ipextstats_list[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			   fold_field((void **)ip_statistics,
					   snmp4_ipextstats_list[i].entry));

	seq_putc(seq, '\n');
	return 0;
}
示例#2
0
/*
 *	Called from the PROCfs module. This outputs /proc/net/snmp.
 */
static int snmp_seq_show(struct seq_file *seq, void *v)
{
	int i;

	seq_puts(seq, "Ip: Forwarding DefaultTTL");

	for (i = 0; snmp4_ipstats_list[i].name != NULL; i++)
		seq_printf(seq, " %s", snmp4_ipstats_list[i].name);

	seq_printf(seq, "\nIp: %d %d",
			ipv4_devconf.forwarding ? 1 : 2, sysctl_ip_default_ttl);

	for (i = 0; snmp4_ipstats_list[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			   fold_field((void **) ip_statistics, 
				      snmp4_ipstats_list[i].entry));

	seq_puts(seq, "\nIcmp:");
	for (i = 0; snmp4_icmp_list[i].name != NULL; i++)
		seq_printf(seq, " %s", snmp4_icmp_list[i].name);

	seq_puts(seq, "\nIcmp:");
	for (i = 0; snmp4_icmp_list[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			   fold_field((void **) icmp_statistics, 
				      snmp4_icmp_list[i].entry));

	seq_puts(seq, "\nTcp:");
	for (i = 0; snmp4_tcp_list[i].name != NULL; i++)
		seq_printf(seq, " %s", snmp4_tcp_list[i].name);

	seq_puts(seq, "\nTcp:");
	for (i = 0; snmp4_tcp_list[i].name != NULL; i++) {
		/* MaxConn field is signed, RFC 2012 */
		if (snmp4_tcp_list[i].entry == TCP_MIB_MAXCONN)
			seq_printf(seq, " %ld",
				   fold_field((void **) tcp_statistics, 
					      snmp4_tcp_list[i].entry));
		else
			seq_printf(seq, " %lu",
				   fold_field((void **) tcp_statistics,
					      snmp4_tcp_list[i].entry));
	}

	seq_puts(seq, "\nUdp:");
	for (i = 0; snmp4_udp_list[i].name != NULL; i++)
		seq_printf(seq, " %s", snmp4_udp_list[i].name);

	seq_puts(seq, "\nUdp:");
	for (i = 0; snmp4_udp_list[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			   fold_field((void **) udp_statistics, 
				      snmp4_udp_list[i].entry));

	seq_putc(seq, '\n');
	return 0;
}
示例#3
0
文件: proc.c 项目: hugh712/Jollen
int snmp_get_info(char *buffer, char **start, off_t offset, int length)
{
	extern int sysctl_ip_default_ttl;
	int len, i;

	len = sprintf (buffer,
		"Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates\n"
		"Ip: %d %d", ipv4_devconf.forwarding ? 1 : 2, sysctl_ip_default_ttl);
	for (i=0; i<offsetof(struct ip_mib, __pad)/sizeof(unsigned long); i++)
		len += sprintf(buffer+len, " %lu", fold_field((unsigned long*)ip_statistics, sizeof(struct ip_mib), i));

	len += sprintf (buffer + len,
		"\nIcmp: InMsgs InErrors InDestUnreachs InTimeExcds InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors OutDestUnreachs OutTimeExcds OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps OutTimestampReps OutAddrMasks OutAddrMaskReps\n"
		  "Icmp:");
	for (i=0; i<offsetof(struct icmp_mib, __pad)/sizeof(unsigned long); i++)
		len += sprintf(buffer+len, " %lu", fold_field((unsigned long*)icmp_statistics, sizeof(struct icmp_mib), i));

	len += sprintf (buffer + len,
		"\nTcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts\n"
		  "Tcp:");
	for (i=0; i<offsetof(struct tcp_mib, __pad)/sizeof(unsigned long); i++)
		len += sprintf(buffer+len, " %lu", fold_field((unsigned long*)tcp_statistics, sizeof(struct tcp_mib), i));

	len += sprintf (buffer + len,
		"\nUdp: InDatagrams NoPorts InErrors OutDatagrams\n"
		  "Udp:");
	for (i=0; i<offsetof(struct udp_mib, __pad)/sizeof(unsigned long); i++)
		len += sprintf(buffer+len, " %lu", fold_field((unsigned long*)udp_statistics, sizeof(struct udp_mib), i));

	len += sprintf (buffer + len, "\n");

	if (offset >= len)
	{
		*start = buffer;
		return 0;
	}
	*start = buffer + offset;
	len -= offset;
	if (len > length)
		len = length;
	if (len < 0)
		len = 0; 
	return len;
}
示例#4
0
static int xfrm_statistics_seq_show(struct seq_file *seq, void *v)
{
	struct net *net = seq->private;
	int i;
	for (i=0; xfrm_mib_list[i].name; i++)
		seq_printf(seq, "%-24s\t%lu\n", xfrm_mib_list[i].name,
			   fold_field((void **)net->mib.xfrm_statistics,
				      xfrm_mib_list[i].entry));
	return 0;
}
示例#5
0
static void icmp_put(struct seq_file *seq)
{
	int i;

	seq_puts(seq, "\nIcmp: InMsgs InErrors");
	for (i=0; icmpmibmap[i].name != NULL; i++)
		seq_printf(seq, " In%s", icmpmibmap[i].name);
	seq_printf(seq, " OutMsgs OutErrors");
	for (i=0; icmpmibmap[i].name != NULL; i++)
		seq_printf(seq, " Out%s", icmpmibmap[i].name);
	seq_printf(seq, "\nIcmp: %lu %lu",
		fold_field((void **) icmp_statistics, ICMP_MIB_INMSGS),
		fold_field((void **) icmp_statistics, ICMP_MIB_INERRORS));
	for (i=0; icmpmibmap[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			fold_field((void **) icmpmsg_statistics,
				icmpmibmap[i].index));
	seq_printf(seq, " %lu %lu",
		fold_field((void **) icmp_statistics, ICMP_MIB_OUTMSGS),
		fold_field((void **) icmp_statistics, ICMP_MIB_OUTERRORS));
	for (i=0; icmpmibmap[i].name != NULL; i++)
		seq_printf(seq, " %lu",
			fold_field((void **) icmpmsg_statistics,
				icmpmibmap[i].index | 0x100 ));
}
示例#6
0
static void icmpmsg_put(struct seq_file *seq)
{
#define PERLINE	16

	int j, i, count;
	static int out[PERLINE];

	count = 0;
	for (i = 0; i < ICMPMSG_MIB_MAX; i++) {

		if (fold_field((void **) icmpmsg_statistics, i))
			out[count++] = i;
		if (count < PERLINE)
			continue;

		seq_printf(seq, "\nIcmpMsg:");
		for (j = 0; j < PERLINE; ++j)
			seq_printf(seq, " %sType%u", i & 0x100 ? "Out" : "In",
					i & 0xff);
		seq_printf(seq, "\nIcmpMsg: ");
		for (j = 0; j < PERLINE; ++j)
			seq_printf(seq, " %lu",
				fold_field((void **) icmpmsg_statistics,
				out[j]));
		seq_putc(seq, '\n');
	}
	if (count) {
		seq_printf(seq, "\nIcmpMsg:");
		for (j = 0; j < count; ++j)
			seq_printf(seq, " %sType%u", out[j] & 0x100 ? "Out" :
				"In", out[j] & 0xff);
		seq_printf(seq, "\nIcmpMsg:");
		for (j = 0; j < count; ++j)
			seq_printf(seq, " %lu", fold_field((void **)
				icmpmsg_statistics, out[j]));
	}

#undef PERLINE
}
示例#7
0
文件: proc.c 项目: hugh712/Jollen
int netstat_get_info(char *buffer, char **start, off_t offset, int length)
{
	int len, i;

	len = sprintf(buffer,
		      "TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed"
		      " EmbryonicRsts PruneCalled RcvPruned OfoPruned"
		      " OutOfWindowIcmps LockDroppedIcmps ArpFilter"
		      " TW TWRecycled TWKilled"
		      " PAWSPassive PAWSActive PAWSEstab"
		      " DelayedACKs DelayedACKLocked DelayedACKLost"
		      " ListenOverflows ListenDrops"
		      " TCPPrequeued TCPDirectCopyFromBacklog"
		      " TCPDirectCopyFromPrequeue TCPPrequeueDropped"
		      " TCPHPHits TCPHPHitsToUser"
		      " TCPPureAcks TCPHPAcks"
		      " TCPRenoRecovery TCPSackRecovery"
		      " TCPSACKReneging"
		      " TCPFACKReorder TCPSACKReorder TCPRenoReorder TCPTSReorder"
		      " TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo"
		      " TCPLoss TCPLostRetransmit"
		      " TCPRenoFailures TCPSackFailures TCPLossFailures"
		      " TCPFastRetrans TCPForwardRetrans TCPSlowStartRetrans"
		      " TCPTimeouts"
		      " TCPRenoRecoveryFail TCPSackRecoveryFail"
		      " TCPSchedulerFailed TCPRcvCollapsed"
		      " TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv"
		      " TCPAbortOnSyn TCPAbortOnData TCPAbortOnClose"
		      " TCPAbortOnMemory TCPAbortOnTimeout TCPAbortOnLinger"
		      " TCPAbortFailed TCPMemoryPressures\n"
		      "TcpExt:");
	for (i=0; i<offsetof(struct linux_mib, __pad)/sizeof(unsigned long); i++)
		len += sprintf(buffer+len, " %lu", fold_field((unsigned long*)net_statistics, sizeof(struct linux_mib), i));

	len += sprintf (buffer + len, "\n");

	if (offset >= len)
	{
		*start = buffer;
		return 0;
	}
	*start = buffer + offset;
	len -= offset;
	if (len > length)
		len = length;
	if (len < 0)
		len = 0; 
	return len;
}
示例#8
0
int afinet6_get_snmp(char *buffer, char **start, off_t offset, int length)
{
	int len = 0;
	int i;

	for (i=0; i<sizeof(snmp6_list)/sizeof(snmp6_list[0]); i++)
		len += sprintf(buffer+len, "%-32s\t%ld\n", snmp6_list[i].name,
			       fold_field(snmp6_list[i].ptr, snmp6_list[i].mibsize));

	len -= offset;

	if (len > length)
		len = length;
	if(len < 0)
		len = 0;

	*start = buffer + offset;

	return len;
}