Skip to contentSkip to conversation

ipv4: convert /proc/net/route to seq_file

PATCH New Arnaldo Carvalho de Melo 1 participant 1 message Oct 13, 2002

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ipv4: convert /proc/net/route to seq_file

David,

Please consider pulling from:

master.kernel.org:/home/acme/BK/ip-2.5

Now there is just this outstanding changeset there.

Best Regards,

- 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-10-13 20:14:27-02:00, [email protected]
o ipv4: convert /proc/net/route to seq_file

 include/net/ip_fib.h     |   25 ++++++++---------
 net/ipv4/fib_frontend.c  |   68 +++++++----------------------------------------
 net/ipv4/fib_hash.c      |   37 +++++++------------------
 net/ipv4/fib_semantics.c |   30 ++++++++++----------
 net/ipv4/ip_proc.c       |   67 ++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 117 insertions(+), 110 deletions(-)
include/net/ip_fib.h +13 -12
diff -Nru a/include/net/ip_fib.h b/include/net/ip_fib.h
@@ -18,6 +18,7 @@
 
 #include <linux/config.h>
 #include <net/flow.h>
+#include <linux/seq_file.h>
 
 struct kern_rta
 {
@@ -128,8 +129,7 @@
 	int		(*tb_dump)(struct fib_table *table, struct sk_buff *skb,
 				     struct netlink_callback *cb);
 	int		(*tb_flush)(struct fib_table *table);
-	int		(*tb_get_info)(struct fib_table *table, char *buf,
-				       int first, int count);
+	int		(*tb_seq_show)(struct fib_table *table, struct seq_file *seq);
 	void		(*tb_select_default)(struct fib_table *table,
 					     const struct flowi *flp, struct fib_result *res);
 
@@ -138,14 +138,14 @@
 
 #ifndef CONFIG_IP_MULTIPLE_TABLES
 
-extern struct fib_table *local_table;
-extern struct fib_table *main_table;
+extern struct fib_table *ip_fib_local_table;
+extern struct fib_table *ip_fib_main_table;
 
 static inline struct fib_table *fib_get_table(int id)
 {
 	if (id != RT_TABLE_LOCAL)
-		return main_table;
-	return local_table;
+		return ip_fib_main_table;
+	return ip_fib_local_table;
 }
 
 static inline struct fib_table *fib_new_table(int id)
@@ -155,8 +155,8 @@
 
 static inline int fib_lookup(const struct flowi *flp, struct fib_result *res)
 {
-	if (local_table->tb_lookup(local_table, flp, res) &&
-	    main_table->tb_lookup(main_table, flp, res))
+	if (ip_fib_local_table->tb_lookup(ip_fib_local_table, flp, res) &&
+	    ip_fib_main_table->tb_lookup(ip_fib_main_table, flp, res))
 		return -ENETUNREACH;
 	return 0;
 }
@@ -164,12 +164,12 @@
 static inline void fib_select_default(const struct flowi *flp, struct fib_result *res)
 {
 	if (FIB_RES_GW(*res) && FIB_RES_NH(*res).nh_scope == RT_SCOPE_LINK)
-		main_table->tb_select_default(main_table, flp, res);
+		ip_fib_main_table->tb_select_default(ip_fib_main_table, flp, res);
 }
 
 #else /* CONFIG_IP_MULTIPLE_TABLES */
-#define local_table (fib_tables[RT_TABLE_LOCAL])
-#define main_table (fib_tables[RT_TABLE_MAIN])
+#define ip_fib_local_table (fib_tables[RT_TABLE_LOCAL])
+#define ip_fib_main_table (fib_tables[RT_TABLE_MAIN])
 
 extern struct fib_table * fib_tables[RT_TABLE_MAX+1];
 extern int fib_lookup(const struct flowi *flp, struct fib_result *res);
@@ -222,7 +222,8 @@
 extern int fib_sync_up(struct net_device *dev);
 extern int fib_convert_rtentry(int cmd, struct nlmsghdr *nl, struct rtmsg *rtm,
 			       struct kern_rta *rta, struct rtentry *r);
-extern void fib_node_get_info(int type, int dead, struct fib_info *fi, u32 prefix, u32 mask, char *buffer);
+extern void fib_node_seq_show(struct seq_file *seq, int type, int dead,
+			      struct fib_info *fi, u32 prefix, u32 mask);
 extern u32  __fib_res_prefsrc(struct fib_result *res);
 
 /* Exported by fib_hash.c */
net/ipv4/fib_frontend.c +11 -57

113 lines not on this page · raw message

net/ipv4/fib_hash.c +11 -26
diff -Nru a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
@@ -747,46 +747,31 @@
 
 #ifdef CONFIG_PROC_FS
 
-static int fn_hash_get_info(struct fib_table *tb, char *buffer, int first, int count)
+static int fn_hash_seq_show(struct fib_table *tb, struct seq_file *seq)
 {
-	struct fn_hash *table = (struct fn_hash*)tb->tb_data;
+	struct fn_hash *table = (struct fn_hash *)tb->tb_data;
 	struct fn_zone *fz;
-	int pos = 0;
-	int n = 0;
 
 	read_lock(&fib_hash_lock);
-	for (fz=table->fn_zone_list; fz; fz = fz->fz_next) {
+	for (fz = table->fn_zone_list; fz; fz = fz->fz_next) {
 		int i;
 		struct fib_node *f;
 		int maxslot = fz->fz_divisor;
 		struct fib_node **fp = fz->fz_hash;
 
-		if (fz->fz_nent == 0)
+		if (!fz->fz_nent)
 			continue;
 
-		if (pos + fz->fz_nent <= first) {
-			pos += fz->fz_nent;
-			continue;
-		}
-
-		for (i=0; i < maxslot; i++, fp++) {
-			for (f = *fp; f; f = f->fn_next) {
-				if (++pos <= first)
-					continue;
-				fib_node_get_info(f->fn_type,
-						  f->fn_state&FN_S_ZOMBIE,
+		for (i = 0; i < maxslot; i++, fp++)
+			for (f = *fp; f; f = f->fn_next)
+				fib_node_seq_show(seq, f->fn_type,
+						  f->fn_state & FN_S_ZOMBIE,
 						  FIB_INFO(f),
 						  fz_prefix(f->fn_key, fz),
-						  FZ_MASK(fz), buffer);
-				buffer += 128;
-				if (++n >= count)
-					goto out;
-			}
-		}
+						  FZ_MASK(fz));
 	}
-out:
 	read_unlock(&fib_hash_lock);
-  	return n;
+  	return 0;
 }
 #endif
 
@@ -913,7 +898,7 @@
 	tb->tb_select_default = fn_hash_select_default;
 	tb->tb_dump = fn_hash_dump;
 #ifdef CONFIG_PROC_FS
-	tb->tb_get_info = fn_hash_get_info;
+	tb->tb_seq_show = fn_hash_seq_show;
 #endif
 	memset(tb->tb_data, 0, sizeof(struct fn_hash));
 	return tb;
net/ipv4/fib_semantics.c +15 -15
diff -Nru a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
@@ -1017,24 +1017,24 @@
 	return flags;
 }
 
-void fib_node_get_info(int type, int dead, struct fib_info *fi, u32 prefix, u32 mask, char *buffer)
+void fib_node_seq_show(struct seq_file *seq, int type, int dead,
+		       struct fib_info *fi, u32 prefix, u32 mask)
 {
-	int len;
+	char bf[128];
 	unsigned flags = fib_flag_trans(type, dead, mask, fi);
 
-	if (fi) {
-		len = sprintf(buffer, "%s\t%08X\t%08X\t%04X\t%d\t%u\t%d\t%08X\t%d\t%u\t%u",
-			      fi->fib_dev ? fi->fib_dev->name : "*", prefix,
-			      fi->fib_nh->nh_gw, flags, 0, 0, fi->fib_priority,
-			      mask, fi->fib_advmss+40, fi->fib_window, fi->fib_rtt>>3);
-	} else {
-		len = sprintf(buffer, "*\t%08X\t%08X\t%04X\t%d\t%u\t%d\t%08X\t%d\t%u\t%u",
-			      prefix, 0,
-			      flags, 0, 0, 0,
-			      mask, 0, 0, 0);
-	}
-	memset(buffer+len, ' ', 127-len);
-	buffer[127] = '\n';
+	if (fi)
+		snprintf(bf, sizeof(bf),
+			 "%s\t%08X\t%08X\t%04X\t%d\t%u\t%d\t%08X\t%d\t%u\t%u",
+			 fi->fib_dev ? fi->fib_dev->name : "*", prefix,
+			 fi->fib_nh->nh_gw, flags, 0, 0, fi->fib_priority,
+			 mask, fi->fib_advmss + 40, fi->fib_window,
+			 fi->fib_rtt >> 3);
+	else
+		snprintf(bf, sizeof(bf),
+			 "*\t%08X\t%08X\t%04X\t%d\t%u\t%d\t%08X\t%d\t%u\t%u",
+			 prefix, 0, flags, 0, 0, 0, mask, 0, 0, 0);
+	seq_printf(seq, "%-127s\n", bf);
 }
 
 #endif
net/ipv4/ip_proc.c +67 -0

110 lines not on this page · raw message

===================================================================

This BitKeeper patch contains the following changesets:
1.834
## Wrapped with gzip_uu ##

begin 664 bkpatch30341 M'XL(`&/PJ3T``\U9>W/:2!+_6_H4?4[%93&C=[VIN'DQP5YU&.4W>URQ8E MI%%064A::;3'_GNUS/#0XPQN>J"\8,4D\_I_LW/>(9?"UHWE$\?TS59_#/ MM&`=Q4\3ZK/HQFOZZ;@YS)%PF:9(:(W2,6V]>M^*LA.]::E(^.PQ?P0W-"\Z M"FD:BSOL1T8[RN6;=U\O7EZJZNDIO!YYR3?ZA3(X/559FM]X<5"\\-@H3I,F MR[VD&%,F5$X74Z>ZINGX9Q''T"Q[2FS-=*8^"0CQ3$(#33==VU2Y]2_6K5Z3 M0C1B:+;I6&1JZ:9EJN=FJYA@J:WB-8B!NA:AY@=W3G1](ZF0:50.+;@1%-? MP=,Z\%KU(84HNS$[@"HQGQ:69[ZK82R5IY.&$6-4-"_!V$44_4]6+KMZ.KG M9535DSU?JJIYFGJVPQ.NG]O5"J/AH*!C+V&17S3]LF-MRYV:3MMQI@&UB&T' MCNNXEAY85G40[Q?*%TK7B:F;4ULSVN9.$Z/$CR<!;4FI&*!A<[1BGNE.-;MM M6E/'=D,W"%W;T,U@V-ZRQML%EDPS43HW;8>#R,Z7<>D:(;9E&<94TQQ,!]_5 M7=>P0E<W;&.H[XS7AKBY.<0E;7>_Q1QYQ:AB':TVVC4,VWKH4-VEAD^LAZUC M25XY3D0W]?T,"_,T830)JHS3'3)M4]UJ&T,CU$W/(>&#C%N363)0UVS-$@"U M&66.5$^[P'N+XYAEF1I>MG5=8):Q@5CF_8AE.[\&9,D<_00G^:UX(P1]K@CZ M(X"LIVN6\^L;N&W.$HFWULY0^'X];HY.MLD<@-7">5R/U-[A@ZZVE=;==C7 MH&TOJ+?4'K$)&.93B^VK!?,01.$FC0*H2US]>XW<W94L'SBL\520!V_-2!. MPW#H)ZE14W]CZKDE$WR1%S#[_#QZ\4%=.!(RJN1KOISFY*$?M^F0TZ\V:J, M:]F4O+0^S>X7S&7]Y+%4H:Y<C:("<%FS"2O64[&)$_B<'@,OOO5^%'";YM<% M1D,/?_ZULL#S.)QAD8,HSAB/V"<!H(+Q5((TWSL,4A#8/R*VX&ZDA3MFF3H M$PUXK@\I^***L[8FOL4)6SITBB]W>V2PDE9CHSAD:=/#\ANE/TDP/\W@L] MG_;9.2U8E*"&-.FS=QZCZ!8<J(JB'/39V]C[5O39)0U?)ZS/L,GKLP^4Y9&/ MHU=<]_'FAZNO\^G_BI(@O>VSWN75U4&MJRI1"$>R%@9C+TH&S!O&M(:S-VZ> MG+&2:QOD!G<3)?87:Z[)!7_RL#*<L%12\%-,YJ+^!2+^*=9:>`$6Z*T@"\
M6*F5!E)X/D.9PF\T!$N:P2I+F@D"NKY*P!L-]6=7F.488%7EIJ7S',A2C#= MH"X&#)F\*9.#?Y9K9L'*"0TX++E6DZ'M$5>#]EQE25A51,)E2+A46+Y.5RSE M?N;4"U8F<"*_R8EQ7%!ZO484]R1K3+V"*G,><34+T=.G@JXY&'/,N0SM\-%" M1L7N,J)RW\<'0A,P%KZ,NA=?GWWJ0&"B&@QS_U_9#S9OZ58U3AU(.8C*3LY M$S-G03LL!['+U;9QSU@P=/B:C=.;:MTEE;S[J&HZ=Y^4'M_[JH%W0\<O$@3+ M9H*;I(=YS^YM?8EN:-@23VM;1#1BFP>GG:T(C@1@>P7Z$5D^[[6BU0Y_\AN MA&PT''/EO+<X)P;!1.EA$XHS%00%13FJEW"T=K2HVJ'$4:C/X;1B\\4.B>F M%&GRM@4!BW*HV!RP^<X];U8WNONG+P$<Z'&D6I<')0Y)E7,7".M:#PGEBND M6+Q>RIM-:9K86.(TO9YD%=0&A''6@)P6-3@\5!4..=5[TZJ(\LZTD%!#B[!+ M)GP/X</V;2[&A!X$-/0F,;M7)'?2D2OB\!5YADQ10BO"4>+D!=_7EX-KEZ^ MNG@SN/CT^N7%7[5UOJ6N:K8/+WL?D>M<Q[,DNL.'138L>BN^R>SJ1OA&Q9_A MR&^!Q'A%D=A>2I4H"5.^1S5@@LF<Y6CM=_E]C&W&#-NV',5VP]O_="ZL1K@= MQ\(YR.F&22P!<D3;&^4(G%C.+X!R\FR[[<2U&H!'-VY86*2G5LF3W.+9]K# M.=A2-,6U=/FQ:.$\:0889-]?+JER,6$BHZU6\6[#C(KS"4B+^)V&_<*#EBB MGHCP4G8(%94\G:XT1Y@=AC&^#''(HN#T#EQ3:%3#%MLH:-&TZTY41;8/(6 MZW:8P*M;%GC)%B[=-C$.)ABF6U31F#3>=DN\J="H1.UJ%,M%8;6#8=B8. M9%7H(9\R[8D<^SSJ>@!JK#[IFB.&93NZ_<BV"$#>?__@"&?UMT'&-+WQX"% M8_&VJ">'\G$HD>N_OB&56Y_AEKZ'2]6E5-%)S5FER%G/A$EVM$ZHL:&HA\!C M7I=+X<F-@RN%\4'!0S]NLG?(/JL?Y+[#M1O$4<&Z$-[Q?Y[!=TBZ$Z=$43". M+>I6#K-R7,Q)&#>:=QE\BN-@:2E24X2BM"Y$\!MNG=^+.$4=T?$Q]A39\3$_ MC<P,PFGU,$/=^.;:A5U"N2CAB@V>[^=RFMC1%Y4N[_&EH'(;S\.O@S^^/3A M5>]-TW$(Z2-%KJ6<$(RO/T#Z_++>PQ*C6.CXPJ<<MRV\%<,*5S/F*X0"8Y M*+.8SPWCQJ^M?47!EWX>V+/J]_ZUX@&E7_%CQ;S^;?XX6=2_LW?]6W@LLGZ! M^I<_N-Q7_Z4/8$B"8.1STQZNH3M*2P;TLJC-!G1@C4\$=>#L/P3Z*[?W4% M&9/>X'0#$WRVWX<1KZ\BF3V6&X8(2=$=3?G7FNR-#YX7??9<<_^]_#3Y9X#_ MD]DH[\_O3XD9QAA*:+I;V!W\M7)V>)-Z;[email protected]>&0@?%EA248X9S3X=LL/ M']ZWH@&:>,_I:&^:1^R'Y.(16-*\X&9<%',9HGA5CP+7%62,P9G9V#P79S& M!=T9B?HC`S%?+6W-&WQ+TV>7W)#['I*B)=WES]/^B/K7Q61\ZFJV9[2-0/TO (5S2"U?@>````
`
end