aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/bridge/br_sysfs_br.c249
1 files changed, 108 insertions, 141 deletions
diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
index 3b9637fb7939..8dac65552f19 100644
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -49,53 +49,51 @@ static ssize_t store_bridge_parm(struct device *d,
49} 49}
50 50
51 51
52static ssize_t show_forward_delay(struct device *d, 52static ssize_t forward_delay_show(struct device *d,
53 struct device_attribute *attr, char *buf) 53 struct device_attribute *attr, char *buf)
54{ 54{
55 struct net_bridge *br = to_bridge(d); 55 struct net_bridge *br = to_bridge(d);
56 return sprintf(buf, "%lu\n", jiffies_to_clock_t(br->forward_delay)); 56 return sprintf(buf, "%lu\n", jiffies_to_clock_t(br->forward_delay));
57} 57}
58 58
59static ssize_t store_forward_delay(struct device *d, 59static ssize_t forward_delay_store(struct device *d,
60 struct device_attribute *attr, 60 struct device_attribute *attr,
61 const char *buf, size_t len) 61 const char *buf, size_t len)
62{ 62{
63 return store_bridge_parm(d, buf, len, br_set_forward_delay); 63 return store_bridge_parm(d, buf, len, br_set_forward_delay);
64} 64}
65static DEVICE_ATTR(forward_delay, S_IRUGO | S_IWUSR, 65static DEVICE_ATTR_RW(forward_delay);
66 show_forward_delay, store_forward_delay);
67 66
68static ssize_t show_hello_time(struct device *d, struct device_attribute *attr, 67static ssize_t hello_time_show(struct device *d, struct device_attribute *attr,
69 char *buf) 68 char *buf)
70{ 69{
71 return sprintf(buf, "%lu\n", 70 return sprintf(buf, "%lu\n",
72 jiffies_to_clock_t(to_bridge(d)->hello_time)); 71 jiffies_to_clock_t(to_bridge(d)->hello_time));
73} 72}
74 73
75static ssize_t store_hello_time(struct device *d, 74static ssize_t hello_time_store(struct device *d,
76 struct device_attribute *attr, const char *buf, 75 struct device_attribute *attr, const char *buf,
77 size_t len) 76 size_t len)
78{ 77{
79 return store_bridge_parm(d, buf, len, br_set_hello_time); 78 return store_bridge_parm(d, buf, len, br_set_hello_time);
80} 79}
81static DEVICE_ATTR(hello_time, S_IRUGO | S_IWUSR, show_hello_time, 80static DEVICE_ATTR_RW(hello_time);
82 store_hello_time);
83 81
84static ssize_t show_max_age(struct device *d, struct device_attribute *attr, 82static ssize_t max_age_show(struct device *d, struct device_attribute *attr,
85 char *buf) 83 char *buf)
86{ 84{
87 return sprintf(buf, "%lu\n", 85 return sprintf(buf, "%lu\n",
88 jiffies_to_clock_t(to_bridge(d)->max_age)); 86 jiffies_to_clock_t(to_bridge(d)->max_age));
89} 87}
90 88
91static ssize_t store_max_age(struct device *d, struct device_attribute *attr, 89static ssize_t max_age_store(struct device *d, struct device_attribute *attr,
92 const char *buf, size_t len) 90 const char *buf, size_t len)
93{ 91{
94 return store_bridge_parm(d, buf, len, br_set_max_age); 92 return store_bridge_parm(d, buf, len, br_set_max_age);
95} 93}
96static DEVICE_ATTR(max_age, S_IRUGO | S_IWUSR, show_max_age, store_max_age); 94static DEVICE_ATTR_RW(max_age);
97 95
98static ssize_t show_ageing_time(struct device *d, 96static ssize_t ageing_time_show(struct device *d,
99 struct device_attribute *attr, char *buf) 97 struct device_attribute *attr, char *buf)
100{ 98{
101 struct net_bridge *br = to_bridge(d); 99 struct net_bridge *br = to_bridge(d);
@@ -108,16 +106,15 @@ static int set_ageing_time(struct net_bridge *br, unsigned long val)
108 return 0; 106 return 0;
109} 107}
110 108
111static ssize_t store_ageing_time(struct device *d, 109static ssize_t ageing_time_store(struct device *d,
112 struct device_attribute *attr, 110 struct device_attribute *attr,
113 const char *buf, size_t len) 111 const char *buf, size_t len)
114{ 112{
115 return store_bridge_parm(d, buf, len, set_ageing_time); 113 return store_bridge_parm(d, buf, len, set_ageing_time);
116} 114}
117static DEVICE_ATTR(ageing_time, S_IRUGO | S_IWUSR, show_ageing_time, 115static DEVICE_ATTR_RW(ageing_time);
118 store_ageing_time);
119 116
120static ssize_t show_stp_state(struct device *d, 117static ssize_t stp_state_show(struct device *d,
121 struct device_attribute *attr, char *buf) 118 struct device_attribute *attr, char *buf)
122{ 119{
123 struct net_bridge *br = to_bridge(d); 120 struct net_bridge *br = to_bridge(d);
@@ -125,7 +122,7 @@ static ssize_t show_stp_state(struct device *d,
125} 122}
126 123
127 124
128static ssize_t store_stp_state(struct device *d, 125static ssize_t stp_state_store(struct device *d,
129 struct device_attribute *attr, const char *buf, 126 struct device_attribute *attr, const char *buf,
130 size_t len) 127 size_t len)
131{ 128{
@@ -147,20 +144,21 @@ static ssize_t store_stp_state(struct device *d,
147 144
148 return len; 145 return len;
149} 146}
150static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state, 147static DEVICE_ATTR_RW(stp_state);
151 store_stp_state);
152 148
153static ssize_t show_group_fwd_mask(struct device *d, 149static ssize_t group_fwd_mask_show(struct device *d,
154 struct device_attribute *attr, char *buf) 150 struct device_attribute *attr,
151 char *buf)
155{ 152{
156 struct net_bridge *br = to_bridge(d); 153 struct net_bridge *br = to_bridge(d);
157 return sprintf(buf, "%#x\n", br->group_fwd_mask); 154 return sprintf(buf, "%#x\n", br->group_fwd_mask);
158} 155}
159 156
160 157
161static ssize_t store_group_fwd_mask(struct device *d, 158static ssize_t group_fwd_mask_store(struct device *d,
162 struct device_attribute *attr, const char *buf, 159 struct device_attribute *attr,
163 size_t len) 160 const char *buf,
161 size_t len)
164{ 162{
165 struct net_bridge *br = to_bridge(d); 163 struct net_bridge *br = to_bridge(d);
166 char *endp; 164 char *endp;
@@ -180,10 +178,9 @@ static ssize_t store_group_fwd_mask(struct device *d,
180 178
181 return len; 179 return len;
182} 180}
183static DEVICE_ATTR(group_fwd_mask, S_IRUGO | S_IWUSR, show_group_fwd_mask, 181static DEVICE_ATTR_RW(group_fwd_mask);
184 store_group_fwd_mask);
185 182
186static ssize_t show_priority(struct device *d, struct device_attribute *attr, 183static ssize_t priority_show(struct device *d, struct device_attribute *attr,
187 char *buf) 184 char *buf)
188{ 185{
189 struct net_bridge *br = to_bridge(d); 186 struct net_bridge *br = to_bridge(d);
@@ -197,93 +194,91 @@ static int set_priority(struct net_bridge *br, unsigned long val)
197 return 0; 194 return 0;
198} 195}
199 196
200static ssize_t store_priority(struct device *d, struct device_attribute *attr, 197static ssize_t priority_store(struct device *d, struct device_attribute *attr,
201 const char *buf, size_t len) 198 const char *buf, size_t len)
202{ 199{
203 return store_bridge_parm(d, buf, len, set_priority); 200 return store_bridge_parm(d, buf, len, set_priority);
204} 201}
205static DEVICE_ATTR(priority, S_IRUGO | S_IWUSR, show_priority, store_priority); 202static DEVICE_ATTR_RW(priority);
206 203
207static ssize_t show_root_id(struct device *d, struct device_attribute *attr, 204static ssize_t root_id_show(struct device *d, struct device_attribute *attr,
208 char *buf) 205 char *buf)
209{ 206{
210 return br_show_bridge_id(buf, &to_bridge(d)->designated_root); 207 return br_show_bridge_id(buf, &to_bridge(d)->designated_root);
211} 208}
212static DEVICE_ATTR(root_id, S_IRUGO, show_root_id, NULL); 209static DEVICE_ATTR_RO(root_id);
213 210
214static ssize_t show_bridge_id(struct device *d, struct device_attribute *attr, 211static ssize_t bridge_id_show(struct device *d, struct device_attribute *attr,
215 char *buf) 212 char *buf)
216{ 213{
217 return br_show_bridge_id(buf, &to_bridge(d)->bridge_id); 214 return br_show_bridge_id(buf, &to_bridge(d)->bridge_id);
218} 215}
219static DEVICE_ATTR(bridge_id, S_IRUGO, show_bridge_id, NULL); 216static DEVICE_ATTR_RO(bridge_id);
220 217
221static ssize_t show_root_port(struct device *d, struct device_attribute *attr, 218static ssize_t root_port_show(struct device *d, struct device_attribute *attr,
222 char *buf) 219 char *buf)
223{ 220{
224 return sprintf(buf, "%d\n", to_bridge(d)->root_port); 221 return sprintf(buf, "%d\n", to_bridge(d)->root_port);
225} 222}
226static DEVICE_ATTR(root_port, S_IRUGO, show_root_port, NULL); 223static DEVICE_ATTR_RO(root_port);
227 224
228static ssize_t show_root_path_cost(struct device *d, 225static ssize_t root_path_cost_show(struct device *d,
229 struct device_attribute *attr, char *buf) 226 struct device_attribute *attr, char *buf)
230{ 227{
231 return sprintf(buf, "%d\n", to_bridge(d)->root_path_cost); 228 return sprintf(buf, "%d\n", to_bridge(d)->root_path_cost);
232} 229}
233static DEVICE_ATTR(root_path_cost, S_IRUGO, show_root_path_cost, NULL); 230static DEVICE_ATTR_RO(root_path_cost);
234 231
235static ssize_t show_topology_change(struct device *d, 232static ssize_t topology_change_show(struct device *d,
236 struct device_attribute *attr, char *buf) 233 struct device_attribute *attr, char *buf)
237{ 234{
238 return sprintf(buf, "%d\n", to_bridge(d)->topology_change); 235 return sprintf(buf, "%d\n", to_bridge(d)->topology_change);
239} 236}
240static DEVICE_ATTR(topology_change, S_IRUGO, show_topology_change, NULL); 237static DEVICE_ATTR_RO(topology_change);
241 238
242static ssize_t show_topology_change_detected(struct device *d, 239static ssize_t topology_change_detected_show(struct device *d,
243 struct device_attribute *attr, 240 struct device_attribute *attr,
244 char *buf) 241 char *buf)
245{ 242{
246 struct net_bridge *br = to_bridge(d); 243 struct net_bridge *br = to_bridge(d);
247 return sprintf(buf, "%d\n", br->topology_change_detected); 244 return sprintf(buf, "%d\n", br->topology_change_detected);
248} 245}
249static DEVICE_ATTR(topology_change_detected, S_IRUGO, 246static DEVICE_ATTR_RO(topology_change_detected);
250 show_topology_change_detected, NULL);
251 247
252static ssize_t show_hello_timer(struct device *d, 248static ssize_t hello_timer_show(struct device *d,
253 struct device_attribute *attr, char *buf) 249 struct device_attribute *attr, char *buf)
254{ 250{
255 struct net_bridge *br = to_bridge(d); 251 struct net_bridge *br = to_bridge(d);
256 return sprintf(buf, "%ld\n", br_timer_value(&br->hello_timer)); 252 return sprintf(buf, "%ld\n", br_timer_value(&br->hello_timer));
257} 253}
258static DEVICE_ATTR(hello_timer, S_IRUGO, show_hello_timer, NULL); 254static DEVICE_ATTR_RO(hello_timer);
259 255
260static ssize_t show_tcn_timer(struct device *d, struct device_attribute *attr, 256static ssize_t tcn_timer_show(struct device *d, struct device_attribute *attr,
261 char *buf) 257 char *buf)
262{ 258{
263 struct net_bridge *br = to_bridge(d); 259 struct net_bridge *br = to_bridge(d);
264 return sprintf(buf, "%ld\n", br_timer_value(&br->tcn_timer)); 260 return sprintf(buf, "%ld\n", br_timer_value(&br->tcn_timer));
265} 261}
266static DEVICE_ATTR(tcn_timer, S_IRUGO, show_tcn_timer, NULL); 262static DEVICE_ATTR_RO(tcn_timer);
267 263
268static ssize_t show_topology_change_timer(struct device *d, 264static ssize_t topology_change_timer_show(struct device *d,
269 struct device_attribute *attr, 265 struct device_attribute *attr,
270 char *buf) 266 char *buf)
271{ 267{
272 struct net_bridge *br = to_bridge(d); 268 struct net_bridge *br = to_bridge(d);
273 return sprintf(buf, "%ld\n", br_timer_value(&br->topology_change_timer)); 269 return sprintf(buf, "%ld\n", br_timer_value(&br->topology_change_timer));
274} 270}
275static DEVICE_ATTR(topology_change_timer, S_IRUGO, show_topology_change_timer, 271static DEVICE_ATTR_RO(topology_change_timer);
276 NULL);
277 272
278static ssize_t show_gc_timer(struct device *d, struct device_attribute *attr, 273static ssize_t gc_timer_show(struct device *d, struct device_attribute *attr,
279 char *buf) 274 char *buf)
280{ 275{
281 struct net_bridge *br = to_bridge(d); 276 struct net_bridge *br = to_bridge(d);
282 return sprintf(buf, "%ld\n", br_timer_value(&br->gc_timer)); 277 return sprintf(buf, "%ld\n", br_timer_value(&br->gc_timer));
283} 278}
284static DEVICE_ATTR(gc_timer, S_IRUGO, show_gc_timer, NULL); 279static DEVICE_ATTR_RO(gc_timer);
285 280
286static ssize_t show_group_addr(struct device *d, 281static ssize_t group_addr_show(struct device *d,
287 struct device_attribute *attr, char *buf) 282 struct device_attribute *attr, char *buf)
288{ 283{
289 struct net_bridge *br = to_bridge(d); 284 struct net_bridge *br = to_bridge(d);
@@ -293,7 +288,7 @@ static ssize_t show_group_addr(struct device *d,
293 br->group_addr[4], br->group_addr[5]); 288 br->group_addr[4], br->group_addr[5]);
294} 289}
295 290
296static ssize_t store_group_addr(struct device *d, 291static ssize_t group_addr_store(struct device *d,
297 struct device_attribute *attr, 292 struct device_attribute *attr,
298 const char *buf, size_t len) 293 const char *buf, size_t len)
299{ 294{
@@ -324,10 +319,9 @@ static ssize_t store_group_addr(struct device *d,
324 return len; 319 return len;
325} 320}
326 321
327static DEVICE_ATTR(group_addr, S_IRUGO | S_IWUSR, 322static DEVICE_ATTR_RW(group_addr);
328 show_group_addr, store_group_addr);
329 323
330static ssize_t store_flush(struct device *d, 324static ssize_t flush_store(struct device *d,
331 struct device_attribute *attr, 325 struct device_attribute *attr,
332 const char *buf, size_t len) 326 const char *buf, size_t len)
333{ 327{
@@ -339,26 +333,25 @@ static ssize_t store_flush(struct device *d,
339 br_fdb_flush(br); 333 br_fdb_flush(br);
340 return len; 334 return len;
341} 335}
342static DEVICE_ATTR(flush, S_IWUSR, NULL, store_flush); 336static DEVICE_ATTR_WO(flush);
343 337
344#ifdef CONFIG_BRIDGE_IGMP_SNOOPING 338#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
345static ssize_t show_multicast_router(struct device *d, 339static ssize_t multicast_router_show(struct device *d,
346 struct device_attribute *attr, char *buf) 340 struct device_attribute *attr, char *buf)
347{ 341{
348 struct net_bridge *br = to_bridge(d); 342 struct net_bridge *br = to_bridge(d);
349 return sprintf(buf, "%d\n", br->multicast_router); 343 return sprintf(buf, "%d\n", br->multicast_router);
350} 344}
351 345
352static ssize_t store_multicast_router(struct device *d, 346static ssize_t multicast_router_store(struct device *d,
353 struct device_attribute *attr, 347 struct device_attribute *attr,
354 const char *buf, size_t len) 348 const char *buf, size_t len)
355{ 349{
356 return store_bridge_parm(d, buf, len, br_multicast_set_router); 350 return store_bridge_parm(d, buf, len, br_multicast_set_router);
357} 351}
358static DEVICE_ATTR(multicast_router, S_IRUGO | S_IWUSR, show_multicast_router, 352static DEVICE_ATTR_RW(multicast_router);
359 store_multicast_router);
360 353
361static ssize_t show_multicast_snooping(struct device *d, 354static ssize_t multicast_snooping_show(struct device *d,
362 struct device_attribute *attr, 355 struct device_attribute *attr,
363 char *buf) 356 char *buf)
364{ 357{
@@ -366,18 +359,17 @@ static ssize_t show_multicast_snooping(struct device *d,
366 return sprintf(buf, "%d\n", !br->multicast_disabled); 359 return sprintf(buf, "%d\n", !br->multicast_disabled);
367} 360}
368 361
369static ssize_t store_multicast_snooping(struct device *d, 362static ssize_t multicast_snooping_store(struct device *d,
370 struct device_attribute *attr, 363 struct device_attribute *attr,
371 const char *buf, size_t len) 364 const char *buf, size_t len)
372{ 365{
373 return store_bridge_parm(d, buf, len, br_multicast_toggle); 366 return store_bridge_parm(d, buf, len, br_multicast_toggle);
374} 367}
375static DEVICE_ATTR(multicast_snooping, S_IRUGO | S_IWUSR, 368static DEVICE_ATTR_RW(multicast_snooping);
376 show_multicast_snooping, store_multicast_snooping);
377 369
378static ssize_t show_multicast_query_use_ifaddr(struct device *d, 370static ssize_t multicast_query_use_ifaddr_show(struct device *d,
379 struct device_attribute *attr, 371 struct device_attribute *attr,
380 char *buf) 372 char *buf)
381{ 373{
382 struct net_bridge *br = to_bridge(d); 374 struct net_bridge *br = to_bridge(d);
383 return sprintf(buf, "%d\n", br->multicast_query_use_ifaddr); 375 return sprintf(buf, "%d\n", br->multicast_query_use_ifaddr);
@@ -390,17 +382,15 @@ static int set_query_use_ifaddr(struct net_bridge *br, unsigned long val)
390} 382}
391 383
392static ssize_t 384static ssize_t
393store_multicast_query_use_ifaddr(struct device *d, 385multicast_query_use_ifaddr_store(struct device *d,
394 struct device_attribute *attr, 386 struct device_attribute *attr,
395 const char *buf, size_t len) 387 const char *buf, size_t len)
396{ 388{
397 return store_bridge_parm(d, buf, len, set_query_use_ifaddr); 389 return store_bridge_parm(d, buf, len, set_query_use_ifaddr);
398} 390}
399static DEVICE_ATTR(multicast_query_use_ifaddr, S_IRUGO | S_IWUSR, 391static DEVICE_ATTR_RW(multicast_query_use_ifaddr);
400 show_multicast_query_use_ifaddr,
401 store_multicast_query_use_ifaddr);
402 392
403static ssize_t show_multicast_querier(struct device *d, 393static ssize_t multicast_querier_show(struct device *d,
404 struct device_attribute *attr, 394 struct device_attribute *attr,
405 char *buf) 395 char *buf)
406{ 396{
@@ -408,16 +398,15 @@ static ssize_t show_multicast_querier(struct device *d,
408 return sprintf(buf, "%d\n", br->multicast_querier); 398 return sprintf(buf, "%d\n", br->multicast_querier);
409} 399}
410 400
411static ssize_t store_multicast_querier(struct device *d, 401static ssize_t multicast_querier_store(struct device *d,
412 struct device_attribute *attr, 402 struct device_attribute *attr,
413 const char *buf, size_t len) 403 const char *buf, size_t len)
414{ 404{
415 return store_bridge_parm(d, buf, len, br_multicast_set_querier); 405 return store_bridge_parm(d, buf, len, br_multicast_set_querier);
416} 406}
417static DEVICE_ATTR(multicast_querier, S_IRUGO | S_IWUSR, 407static DEVICE_ATTR_RW(multicast_querier);
418 show_multicast_querier, store_multicast_querier);
419 408
420static ssize_t show_hash_elasticity(struct device *d, 409static ssize_t hash_elasticity_show(struct device *d,
421 struct device_attribute *attr, char *buf) 410 struct device_attribute *attr, char *buf)
422{ 411{
423 struct net_bridge *br = to_bridge(d); 412 struct net_bridge *br = to_bridge(d);
@@ -430,31 +419,29 @@ static int set_elasticity(struct net_bridge *br, unsigned long val)
430 return 0; 419 return 0;
431} 420}
432 421
433static ssize_t store_hash_elasticity(struct device *d, 422static ssize_t hash_elasticity_store(struct device *d,
434 struct device_attribute *attr, 423 struct device_attribute *attr,
435 const char *buf, size_t len) 424 const char *buf, size_t len)
436{ 425{
437 return store_bridge_parm(d, buf, len, set_elasticity); 426 return store_bridge_parm(d, buf, len, set_elasticity);
438} 427}
439static DEVICE_ATTR(hash_elasticity, S_IRUGO | S_IWUSR, show_hash_elasticity, 428static DEVICE_ATTR_RW(hash_elasticity);
440 store_hash_elasticity);
441 429
442static ssize_t show_hash_max(struct device *d, struct device_attribute *attr, 430static ssize_t hash_max_show(struct device *d, struct device_attribute *attr,
443 char *buf) 431 char *buf)
444{ 432{
445 struct net_bridge *br = to_bridge(d); 433 struct net_bridge *br = to_bridge(d);
446 return sprintf(buf, "%u\n", br->hash_max); 434 return sprintf(buf, "%u\n", br->hash_max);
447} 435}
448 436
449static ssize_t store_hash_max(struct device *d, struct device_attribute *attr, 437static ssize_t hash_max_store(struct device *d, struct device_attribute *attr,
450 const char *buf, size_t len) 438 const char *buf, size_t len)
451{ 439{
452 return store_bridge_parm(d, buf, len, br_multicast_set_hash_max); 440 return store_bridge_parm(d, buf, len, br_multicast_set_hash_max);
453} 441}
454static DEVICE_ATTR(hash_max, S_IRUGO | S_IWUSR, show_hash_max, 442static DEVICE_ATTR_RW(hash_max);
455 store_hash_max);
456 443
457static ssize_t show_multicast_last_member_count(struct device *d, 444static ssize_t multicast_last_member_count_show(struct device *d,
458 struct device_attribute *attr, 445 struct device_attribute *attr,
459 char *buf) 446 char *buf)
460{ 447{
@@ -468,17 +455,15 @@ static int set_last_member_count(struct net_bridge *br, unsigned long val)
468 return 0; 455 return 0;
469} 456}
470 457
471static ssize_t store_multicast_last_member_count(struct device *d, 458static ssize_t multicast_last_member_count_store(struct device *d,
472 struct device_attribute *attr, 459 struct device_attribute *attr,
473 const char *buf, size_t len) 460 const char *buf, size_t len)
474{ 461{
475 return store_bridge_parm(d, buf, len, set_last_member_count); 462 return store_bridge_parm(d, buf, len, set_last_member_count);
476} 463}
477static DEVICE_ATTR(multicast_last_member_count, S_IRUGO | S_IWUSR, 464static DEVICE_ATTR_RW(multicast_last_member_count);
478 show_multicast_last_member_count,
479 store_multicast_last_member_count);
480 465
481static ssize_t show_multicast_startup_query_count( 466static ssize_t multicast_startup_query_count_show(
482 struct device *d, struct device_attribute *attr, char *buf) 467 struct device *d, struct device_attribute *attr, char *buf)
483{ 468{
484 struct net_bridge *br = to_bridge(d); 469 struct net_bridge *br = to_bridge(d);
@@ -491,17 +476,15 @@ static int set_startup_query_count(struct net_bridge *br, unsigned long val)
491 return 0; 476 return 0;
492} 477}
493 478
494static ssize_t store_multicast_startup_query_count( 479static ssize_t multicast_startup_query_count_store(
495 struct device *d, struct device_attribute *attr, const char *buf, 480 struct device *d, struct device_attribute *attr, const char *buf,
496 size_t len) 481 size_t len)
497{ 482{
498 return store_bridge_parm(d, buf, len, set_startup_query_count); 483 return store_bridge_parm(d, buf, len, set_startup_query_count);
499} 484}
500static DEVICE_ATTR(multicast_startup_query_count, S_IRUGO | S_IWUSR, 485static DEVICE_ATTR_RW(multicast_startup_query_count);
501 show_multicast_startup_query_count,
502 store_multicast_startup_query_count);
503 486
504static ssize_t show_multicast_last_member_interval( 487static ssize_t multicast_last_member_interval_show(
505 struct device *d, struct device_attribute *attr, char *buf) 488 struct device *d, struct device_attribute *attr, char *buf)
506{ 489{
507 struct net_bridge *br = to_bridge(d); 490 struct net_bridge *br = to_bridge(d);
@@ -515,17 +498,15 @@ static int set_last_member_interval(struct net_bridge *br, unsigned long val)
515 return 0; 498 return 0;
516} 499}
517 500
518static ssize_t store_multicast_last_member_interval( 501static ssize_t multicast_last_member_interval_store(
519 struct device *d, struct device_attribute *attr, const char *buf, 502 struct device *d, struct device_attribute *attr, const char *buf,
520 size_t len) 503 size_t len)
521{ 504{
522 return store_bridge_parm(d, buf, len, set_last_member_interval); 505 return store_bridge_parm(d, buf, len, set_last_member_interval);
523} 506}
524static DEVICE_ATTR(multicast_last_member_interval, S_IRUGO | S_IWUSR, 507static DEVICE_ATTR_RW(multicast_last_member_interval);
525 show_multicast_last_member_interval,
526 store_multicast_last_member_interval);
527 508
528static ssize_t show_multicast_membership_interval( 509static ssize_t multicast_membership_interval_show(
529 struct device *d, struct device_attribute *attr, char *buf) 510 struct device *d, struct device_attribute *attr, char *buf)
530{ 511{
531 struct net_bridge *br = to_bridge(d); 512 struct net_bridge *br = to_bridge(d);
@@ -539,17 +520,15 @@ static int set_membership_interval(struct net_bridge *br, unsigned long val)
539 return 0; 520 return 0;
540} 521}
541 522
542static ssize_t store_multicast_membership_interval( 523static ssize_t multicast_membership_interval_store(
543 struct device *d, struct device_attribute *attr, const char *buf, 524 struct device *d, struct device_attribute *attr, const char *buf,
544 size_t len) 525 size_t len)
545{ 526{
546 return store_bridge_parm(d, buf, len, set_membership_interval); 527 return store_bridge_parm(d, buf, len, set_membership_interval);
547} 528}
548static DEVICE_ATTR(multicast_membership_interval, S_IRUGO | S_IWUSR, 529static DEVICE_ATTR_RW(multicast_membership_interval);
549 show_multicast_membership_interval,
550 store_multicast_membership_interval);
551 530
552static ssize_t show_multicast_querier_interval(struct device *d, 531static ssize_t multicast_querier_interval_show(struct device *d,
553 struct device_attribute *attr, 532 struct device_attribute *attr,
554 char *buf) 533 char *buf)
555{ 534{
@@ -564,17 +543,15 @@ static int set_querier_interval(struct net_bridge *br, unsigned long val)
564 return 0; 543 return 0;
565} 544}
566 545
567static ssize_t store_multicast_querier_interval(struct device *d, 546static ssize_t multicast_querier_interval_store(struct device *d,
568 struct device_attribute *attr, 547 struct device_attribute *attr,
569 const char *buf, size_t len) 548 const char *buf, size_t len)
570{ 549{
571 return store_bridge_parm(d, buf, len, set_querier_interval); 550 return store_bridge_parm(d, buf, len, set_querier_interval);
572} 551}
573static DEVICE_ATTR(multicast_querier_interval, S_IRUGO | S_IWUSR, 552static DEVICE_ATTR_RW(multicast_querier_interval);
574 show_multicast_querier_interval,
575 store_multicast_querier_interval);
576 553
577static ssize_t show_multicast_query_interval(struct device *d, 554static ssize_t multicast_query_interval_show(struct device *d,
578 struct device_attribute *attr, 555 struct device_attribute *attr,
579 char *buf) 556 char *buf)
580{ 557{
@@ -589,17 +566,15 @@ static int set_query_interval(struct net_bridge *br, unsigned long val)
589 return 0; 566 return 0;
590} 567}
591 568
592static ssize_t store_multicast_query_interval(struct device *d, 569static ssize_t multicast_query_interval_store(struct device *d,
593 struct device_attribute *attr, 570 struct device_attribute *attr,
594 const char *buf, size_t len) 571 const char *buf, size_t len)
595{ 572{
596 return store_bridge_parm(d, buf, len, set_query_interval); 573 return store_bridge_parm(d, buf, len, set_query_interval);
597} 574}
598static DEVICE_ATTR(multicast_query_interval, S_IRUGO | S_IWUSR, 575static DEVICE_ATTR_RW(multicast_query_interval);
599 show_multicast_query_interval,
600 store_multicast_query_interval);
601 576
602static ssize_t show_multicast_query_response_interval( 577static ssize_t multicast_query_response_interval_show(
603 struct device *d, struct device_attribute *attr, char *buf) 578 struct device *d, struct device_attribute *attr, char *buf)
604{ 579{
605 struct net_bridge *br = to_bridge(d); 580 struct net_bridge *br = to_bridge(d);
@@ -614,17 +589,15 @@ static int set_query_response_interval(struct net_bridge *br, unsigned long val)
614 return 0; 589 return 0;
615} 590}
616 591
617static ssize_t store_multicast_query_response_interval( 592static ssize_t multicast_query_response_interval_store(
618 struct device *d, struct device_attribute *attr, const char *buf, 593 struct device *d, struct device_attribute *attr, const char *buf,
619 size_t len) 594 size_t len)
620{ 595{
621 return store_bridge_parm(d, buf, len, set_query_response_interval); 596 return store_bridge_parm(d, buf, len, set_query_response_interval);
622} 597}
623static DEVICE_ATTR(multicast_query_response_interval, S_IRUGO | S_IWUSR, 598static DEVICE_ATTR_RW(multicast_query_response_interval);
624 show_multicast_query_response_interval,
625 store_multicast_query_response_interval);
626 599
627static ssize_t show_multicast_startup_query_interval( 600static ssize_t multicast_startup_query_interval_show(
628 struct device *d, struct device_attribute *attr, char *buf) 601 struct device *d, struct device_attribute *attr, char *buf)
629{ 602{
630 struct net_bridge *br = to_bridge(d); 603 struct net_bridge *br = to_bridge(d);
@@ -639,18 +612,16 @@ static int set_startup_query_interval(struct net_bridge *br, unsigned long val)
639 return 0; 612 return 0;
640} 613}
641 614
642static ssize_t store_multicast_startup_query_interval( 615static ssize_t multicast_startup_query_interval_store(
643 struct device *d, struct device_attribute *attr, const char *buf, 616 struct device *d, struct device_attribute *attr, const char *buf,
644 size_t len) 617 size_t len)
645{ 618{
646 return store_bridge_parm(d, buf, len, set_startup_query_interval); 619 return store_bridge_parm(d, buf, len, set_startup_query_interval);
647} 620}
648static DEVICE_ATTR(multicast_startup_query_interval, S_IRUGO | S_IWUSR, 621static DEVICE_ATTR_RW(multicast_startup_query_interval);
649 show_multicast_startup_query_interval,
650 store_multicast_startup_query_interval);
651#endif 622#endif
652#ifdef CONFIG_BRIDGE_NETFILTER 623#ifdef CONFIG_BRIDGE_NETFILTER
653static ssize_t show_nf_call_iptables( 624static ssize_t nf_call_iptables_show(
654 struct device *d, struct device_attribute *attr, char *buf) 625 struct device *d, struct device_attribute *attr, char *buf)
655{ 626{
656 struct net_bridge *br = to_bridge(d); 627 struct net_bridge *br = to_bridge(d);
@@ -663,16 +634,15 @@ static int set_nf_call_iptables(struct net_bridge *br, unsigned long val)
663 return 0; 634 return 0;
664} 635}
665 636
666static ssize_t store_nf_call_iptables( 637static ssize_t nf_call_iptables_store(
667 struct device *d, struct device_attribute *attr, const char *buf, 638 struct device *d, struct device_attribute *attr, const char *buf,
668 size_t len) 639 size_t len)
669{ 640{
670 return store_bridge_parm(d, buf, len, set_nf_call_iptables); 641 return store_bridge_parm(d, buf, len, set_nf_call_iptables);
671} 642}
672static DEVICE_ATTR(nf_call_iptables, S_IRUGO | S_IWUSR, 643static DEVICE_ATTR_RW(nf_call_iptables);
673 show_nf_call_iptables, store_nf_call_iptables);
674 644
675static ssize_t show_nf_call_ip6tables( 645static ssize_t nf_call_ip6tables_show(
676 struct device *d, struct device_attribute *attr, char *buf) 646 struct device *d, struct device_attribute *attr, char *buf)
677{ 647{
678 struct net_bridge *br = to_bridge(d); 648 struct net_bridge *br = to_bridge(d);
@@ -685,16 +655,15 @@ static int set_nf_call_ip6tables(struct net_bridge *br, unsigned long val)
685 return 0; 655 return 0;
686} 656}
687 657
688static ssize_t store_nf_call_ip6tables( 658static ssize_t nf_call_ip6tables_store(
689 struct device *d, struct device_attribute *attr, const char *buf, 659 struct device *d, struct device_attribute *attr, const char *buf,
690 size_t len) 660 size_t len)
691{ 661{
692 return store_bridge_parm(d, buf, len, set_nf_call_ip6tables); 662 return store_bridge_parm(d, buf, len, set_nf_call_ip6tables);
693} 663}
694static DEVICE_ATTR(nf_call_ip6tables, S_IRUGO | S_IWUSR, 664static DEVICE_ATTR_RW(nf_call_ip6tables);
695 show_nf_call_ip6tables, store_nf_call_ip6tables);
696 665
697static ssize_t show_nf_call_arptables( 666static ssize_t nf_call_arptables_show(
698 struct device *d, struct device_attribute *attr, char *buf) 667 struct device *d, struct device_attribute *attr, char *buf)
699{ 668{
700 struct net_bridge *br = to_bridge(d); 669 struct net_bridge *br = to_bridge(d);
@@ -707,17 +676,16 @@ static int set_nf_call_arptables(struct net_bridge *br, unsigned long val)
707 return 0; 676 return 0;
708} 677}
709 678
710static ssize_t store_nf_call_arptables( 679static ssize_t nf_call_arptables_store(
711 struct device *d, struct device_attribute *attr, const char *buf, 680 struct device *d, struct device_attribute *attr, const char *buf,
712 size_t len) 681 size_t len)
713{ 682{
714 return store_bridge_parm(d, buf, len, set_nf_call_arptables); 683 return store_bridge_parm(d, buf, len, set_nf_call_arptables);
715} 684}
716static DEVICE_ATTR(nf_call_arptables, S_IRUGO | S_IWUSR, 685static DEVICE_ATTR_RW(nf_call_arptables);
717 show_nf_call_arptables, store_nf_call_arptables);
718#endif 686#endif
719#ifdef CONFIG_BRIDGE_VLAN_FILTERING 687#ifdef CONFIG_BRIDGE_VLAN_FILTERING
720static ssize_t show_vlan_filtering(struct device *d, 688static ssize_t vlan_filtering_show(struct device *d,
721 struct device_attribute *attr, 689 struct device_attribute *attr,
722 char *buf) 690 char *buf)
723{ 691{
@@ -725,14 +693,13 @@ static ssize_t show_vlan_filtering(struct device *d,
725 return sprintf(buf, "%d\n", br->vlan_enabled); 693 return sprintf(buf, "%d\n", br->vlan_enabled);
726} 694}
727 695
728static ssize_t store_vlan_filtering(struct device *d, 696static ssize_t vlan_filtering_store(struct device *d,
729 struct device_attribute *attr, 697 struct device_attribute *attr,
730 const char *buf, size_t len) 698 const char *buf, size_t len)
731{ 699{
732 return store_bridge_parm(d, buf, len, br_vlan_filter_toggle); 700 return store_bridge_parm(d, buf, len, br_vlan_filter_toggle);
733} 701}
734static DEVICE_ATTR(vlan_filtering, S_IRUGO | S_IWUSR, 702static DEVICE_ATTR_RW(vlan_filtering);
735 show_vlan_filtering, store_vlan_filtering);
736#endif 703#endif
737 704
738static struct attribute *bridge_attrs[] = { 705static struct attribute *bridge_attrs[] = {