66 seq_puts(seq, "Interface Address Networks "
67 "Status\n");
68 goto out;
69 }
70
71 iface = v;
72 seq_printf(seq, "%-16s %04X:%02X %04X-%04X %d\n",
73 iface->dev->name, ntohs(iface->address.s_net),
74 iface->address.s_node, ntohs(iface->nets.nr_firstnet),
75 ntohs(iface->nets.nr_lastnet), iface->status);
76out:
77 return 0;
78}
79
80static __inline__ struct atalk_route *atalk_get_route_idx(loff_t pos)
81{
82 struct atalk_route *r;
83
84 for (r = atalk_routes; pos && r; r = r->next)
85 --pos;
86
87 return r;
88}
89
90static void *atalk_seq_route_start(struct seq_file *seq, loff_t *pos)
91 __acquires(atalk_routes_lock)
92{
93 loff_t l = *pos;
94
95 read_lock_bh(&atalk_routes_lock);
96 return l ? atalk_get_route_idx(--l) : SEQ_START_TOKEN;
97}
98
99static void *atalk_seq_route_next(struct seq_file *seq, void *v, loff_t *pos)
100{
101 struct atalk_route *r;
102
103 ++*pos;
104 if (v == SEQ_START_TOKEN) {
105 r = NULL;
106 if (atalk_routes)