ipv4: convert /proc/net/snmp to seq_file
PATCH 1/1 ipv4: convert /proc/net/snmp to seq_file
Hi David,
Please pull from:
master.kernel.org:/home/acme/BK/net-2.5
- Arnaldo
You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.
===================================================================
[email protected], 2002-11-12 22:55:20-02:00, [email protected]
o ipv4: convert /proc/net/snmp to seq_file
proc.c | 121 +++++++++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 74 insertions(+), 47 deletions(-)
net/ipv4/proc.c +74 -47
@@ -26,6 +26,7 @@* Andi Kleen : Add support for open_requests and * split functions for more readibility. * Andi Kleen : Add support for /proc/net/netstat +* Arnaldo C. Melo : Convert to seq_file * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License
@@ -115,52 +116,73 @@/* * Called from the PROCfs module. This outputs /proc/net/snmp. */ - -int snmp_get_info (char *buffer,char **start,off_t offset,int length) +static int snmp_seq_show (struct seq_file *seq,void *v) {extern int sysctl_ip_default_ttl; -int len, i; +int 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 , dummy)/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)); +seq_printf (seq,"Ip: Forwarding DefaultTTL InReceives InHdrErrors " +"InAddrErrors ForwDatagrams InUnknownProtos " +"InDiscards InDelivers OutRequests OutDiscards " +"OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs " +"ReasmFails FragOKs FragFails FragCreates\nIp: %d %d" , + ipv4_devconf.forwarding ?1 :2 , sysctl_ip_default_ttl); - len +=sprintf (buffer + len,"\n" ); +for (i =0 ; + i < offsetof(struct ip_mib , __pad) /sizeof (unsigned long ); i++) +seq_printf (seq," %lu" , +fold_field ((unsigned long *)ip_statistics, +sizeof (struct ip_mib ), i)); -if (offset >= len) - { - *start = buffer; -return 0 ; - } - *start = buffer + offset; - len -= offset; -if (len > length) - len = length; -if (len <0 ) - len =0 ; -return len; +seq_printf (seq,"\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\nIcmp:" ); + +for (i =0 ; + i < offsetof(struct icmp_mib , dummy) /sizeof (unsigned long ); i++) +seq_printf (seq," %lu" , +fold_field ((unsigned long *)icmp_statistics, +sizeof (struct icmp_mib ), i)); + +seq_printf (seq,"\nTcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens " +"PassiveOpens AttemptFails EstabResets CurrEstab " +"InSegs OutSegs RetransSegs InErrs OutRsts\nTcp:" ); + +for (i =0 ; + i < offsetof(struct tcp_mib , __pad) /sizeof (unsigned long ); i++) +seq_printf (seq," %lu" , +fold_field ((unsigned long *)tcp_statistics, +sizeof (struct tcp_mib ), i)); + +seq_printf (seq,"\nUdp: InDatagrams NoPorts InErrors OutDatagrams\n" +"Udp:" ); + +for (i =0 ; + i < offsetof(struct udp_mib , __pad) /sizeof (unsigned long ); i++) +seq_printf (seq," %lu" , +fold_field ((unsigned long *)udp_statistics, +sizeof (struct udp_mib ), i)); + +seq_putc (seq,'\n' ); +return 0 ; } +static int snmp_seq_open (struct inode *inode,struct file *file) +{ +return single_open (file, snmp_seq_show,NULL ); +} + +static struct file_operations snmp_seq_fops = { + .open = snmp_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; +/* * Output /proc/net/netstat */
@@ -181,7 +203,8 @@" TCPPureAcks TCPHPAcks" " TCPRenoRecovery TCPSackRecovery" " TCPSACKReneging" -" TCPFACKReorder TCPSACKReorder TCPRenoReorder TCPTSReorder" +" TCPFACKReorder TCPSACKReorder TCPRenoReorder" +" TCPTSReorder" " TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo" " TCPLoss TCPLostRetransmit" " TCPRenoFailures TCPSackFailures TCPLossFailures"
@@ -189,14 +212,14 @@" TCPTimeouts" " TCPRenoRecoveryFail TCPSackRecoveryFail" " TCPSchedulerFailed TCPRcvCollapsed" -" TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv" +" 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++) + i < offsetof(struct linux_mib , __pad) /sizeof (unsigned long ); i++)seq_printf (seq," %lu" ,fold_field ((unsigned long *)net_statistics,sizeof (struct linux_mib ), i));
@@ -219,20 +242,24 @@int __init ip_misc_proc_init (void ) {int rc =0 ; -struct proc_dir_entry *p =create_proc_entry ("netstat" ,S_IRUGO , proc_net); - +struct proc_dir_entry *p; + + p =create_proc_entry ("netstat" ,S_IRUGO , proc_net);if (!p) goto out_netstat; p->proc_fops = &netstat_seq_fops; -if (!proc_net_create ("snmp" ,0 , snmp_get_info)) + p =create_proc_entry ("snmp" ,S_IRUGO , proc_net); +if (!p) goto out_snmp; + p->proc_fops = &snmp_seq_fops; +if (!proc_net_create ("sockstat" ,0 , afinet_get_info)) goto out_sockstat; out:return rc; out_sockstat: -proc_net_remove ("snmp" ); +remove_proc_entry ("snmp" , proc_net); out_snmp:remove_proc_entry ("netstat" , proc_net); out_netstat:
===================================================================
This BitKeeper patch contains the following changesets:
1.825
## Wrapped with gzip_uu ##
begin 664 bkpatch4864 M'XL(`'VVT3T``\U7;7/:1A#^+/V*+9DTQL&@%\1;ZC0..EC.Z:R_<TSC"P= MH+&D(W<'CEORW[M[@$N3IQ,FRG&OMN]V]WG=I][\3.XDDQTC"!,F?D,/G"I M.D;(,Q:J>!Y40YY6;P0.^)SC0&W"4U9[>U++F#IPJIZ)(X-A1.8,R$[AEUU M"XVZG[*.X1^_OSH]\DWS\!"ZDR;LPNFX/#05%S,@R22;P(U27A652+(9,J4 MCKDHIBX<RW+PQ[.;KN4U%G;#JC<7H1W9=E"W660Y]5:C;A+\-P]A/_!BX\=Q MR<_":;F-IMD#N]IR/+"<FFW7;<<I^-Y'<<ZL)R.9<%.I_#2A@/+?O_[@*Z M9@@<XNF\W@$,B>E44)L*'E*J:S)+IQ@0)/LT',4),T^EF";@W52S8/O_)BF M%5CFZV\LA,(3+VF&FXNI^VU%FZ]T6PO6+OAN&%SY+:MEM5R;W:G;J<O+(IK M69YGM1:.VVQ8FBD/)GZ;+S^$\A'6/(*2N$,HK7:]Z6GN-!\RQVI]G3G-.AS4 MF_\#[NA$G\.!N--?Y,+@8<Y_@$Y]IP6V"?O&D<AP=1RZ53AC"3>,CM%=XMH$ MTK/M%CAFW[;;:"=5H.(0XDP!01[2-#GA=WM2B5FH"C/8QUX%YCR.8']>1B^. M@^;]O#'(/GY%VCJN$]7U!C1,@ZRG@='>]J\U)]VX!T7=X&(XFP,/38*9HFZ MO#R%?N:SD,5S)K'[(1+'0GAH60:AE'J9T=1H2+[7J""L0A2FGR5W6;\+AL( MKOC:H!?+$*/0A!Y+8CHIX7RF?/9IQJ32_6)*;H.:C]SG,X40?!;(]#).&8JY M@(;14G]^LC+1XKL@3A"5",8T0.U:TQ4L0'_7&2W\>83?4H4LJ>3#B,V1.*/J M:)V0W\&&#C@5D/<R5,DPGN(LG:.A4DF9,EQOZ;QCXYD&FL)>#(=@O3(-H$\, MOP$?C213?+0J(GI)XYL*#(?3("I##63\)\/A62;C<<8BP-TP+K^"^.7+,J+[ M1]7@>3++<6.$4\BI1+HKUM![!?QD":4!(Y);5!#FH5<M/N0)Q62_)L\F M1C9L<+T=K,'TA2DFL)^=R3%5=,D$*JU45QDF.9R02!4[_AQ&:QH,I$B,VYH M]$*$?\Q8ED_U610+/"FTNW"RP1R2?#9=^<,%I=O"<IH>1;(VVV2DD9/0#II MM-@NX1+E-O$6M%O#1F&-&(4-R)J\*\R%:0Y]V5G%W8"]*>GAPG(-?T.@*<ML ME[TUT]F&%KD'(MF:7K_GW*,0CV)94M,*YY=[V3698C$\A4_2L9<Q&J2DG6 M9[H)/@/^XBF:P1%=*NQ\RK)5#@>!E(7J2"F63E6^\X\1WHW/,$,2NC,AM%RP MY(+EK-"MS_0MI/N:UWFA\83*H7U7%53XLS8Z17I*#9:(OEZ"JTCO[?69_I$/ MN%;&YUVSFKT.LL325:4'>.IV9E%/RL[%.DIV5DB>IB=F0KSB"^NLQ>T0L'4 M3&2T.CPC73HK=UW;'(E8<#_C$=[9NL'+)%?F]SC]+9M_%5XEWCL)RZUIK++] M$*CQZO34T3Q!?$MPV[X(SN!2HY[H+;<3QH#@%C5,FM@?TME)B1*IZ!D1Y M'?5)ER22L=N55@OYU`3O64;J'.M243&_4-)Z=JNNKT1L''.5Z1)<=@?OCKHG M/N,B8H+$BVW19QE?BJ5MN\N+0M^SV_E#!YL'WGOD[SR)+AB6H9!'?$O&5\V\
MM,MNQ/,A#)"_Q]KT'GN<ODF<S3Y_!X%[CD.(^X[C@HO,RKW0,W.(M\@0,8I[ MV)\BO7'33&YH7ZK#/4,/;I7PM<IE;Q4@8MAW[]Z?U[)':">+FY'/SW[U#B/ M^J#*/^+B$>P]\NT3"[:VL7!:SV\)-"O6XS2M79<3X?4#5(XY?.=X3:B%/\; 8AQ,6WLI9>AAYS5$0NJ'Y-_3D536(#P``
`
end