@@ -415,6 +415,201 @@ static ssize_t store_hash_max(struct device *d, struct device_attribute *attr,
415
415
}
416
416
static DEVICE_ATTR (hash_max , S_IRUGO | S_IWUSR , show_hash_max ,
417
417
store_hash_max ) ;
418
+
419
+ static ssize_t show_multicast_last_member_count (struct device * d ,
420
+ struct device_attribute * attr ,
421
+ char * buf )
422
+ {
423
+ struct net_bridge * br = to_bridge (d );
424
+ return sprintf (buf , "%u\n" , br -> multicast_last_member_count );
425
+ }
426
+
427
+ static int set_last_member_count (struct net_bridge * br , unsigned long val )
428
+ {
429
+ br -> multicast_last_member_count = val ;
430
+ return 0 ;
431
+ }
432
+
433
+ static ssize_t store_multicast_last_member_count (struct device * d ,
434
+ struct device_attribute * attr ,
435
+ const char * buf , size_t len )
436
+ {
437
+ return store_bridge_parm (d , buf , len , set_last_member_count );
438
+ }
439
+ static DEVICE_ATTR (multicast_last_member_count , S_IRUGO | S_IWUSR ,
440
+ show_multicast_last_member_count ,
441
+ store_multicast_last_member_count ) ;
442
+
443
+ static ssize_t show_multicast_startup_query_count (
444
+ struct device * d , struct device_attribute * attr , char * buf )
445
+ {
446
+ struct net_bridge * br = to_bridge (d );
447
+ return sprintf (buf , "%u\n" , br -> multicast_startup_query_count );
448
+ }
449
+
450
+ static int set_startup_query_count (struct net_bridge * br , unsigned long val )
451
+ {
452
+ br -> multicast_startup_query_count = val ;
453
+ return 0 ;
454
+ }
455
+
456
+ static ssize_t store_multicast_startup_query_count (
457
+ struct device * d , struct device_attribute * attr , const char * buf ,
458
+ size_t len )
459
+ {
460
+ return store_bridge_parm (d , buf , len , set_startup_query_count );
461
+ }
462
+ static DEVICE_ATTR (multicast_startup_query_count , S_IRUGO | S_IWUSR ,
463
+ show_multicast_startup_query_count ,
464
+ store_multicast_startup_query_count ) ;
465
+
466
+ static ssize_t show_multicast_last_member_interval (
467
+ struct device * d , struct device_attribute * attr , char * buf )
468
+ {
469
+ struct net_bridge * br = to_bridge (d );
470
+ return sprintf (buf , "%lu\n" ,
471
+ jiffies_to_clock_t (br -> multicast_last_member_interval ));
472
+ }
473
+
474
+ static int set_last_member_interval (struct net_bridge * br , unsigned long val )
475
+ {
476
+ br -> multicast_last_member_interval = clock_t_to_jiffies (val );
477
+ return 0 ;
478
+ }
479
+
480
+ static ssize_t store_multicast_last_member_interval (
481
+ struct device * d , struct device_attribute * attr , const char * buf ,
482
+ size_t len )
483
+ {
484
+ return store_bridge_parm (d , buf , len , set_last_member_interval );
485
+ }
486
+ static DEVICE_ATTR (multicast_last_member_interval , S_IRUGO | S_IWUSR ,
487
+ show_multicast_last_member_interval ,
488
+ store_multicast_last_member_interval ) ;
489
+
490
+ static ssize_t show_multicast_membership_interval (
491
+ struct device * d , struct device_attribute * attr , char * buf )
492
+ {
493
+ struct net_bridge * br = to_bridge (d );
494
+ return sprintf (buf , "%lu\n" ,
495
+ jiffies_to_clock_t (br -> multicast_membership_interval ));
496
+ }
497
+
498
+ static int set_membership_interval (struct net_bridge * br , unsigned long val )
499
+ {
500
+ br -> multicast_membership_interval = clock_t_to_jiffies (val );
501
+ return 0 ;
502
+ }
503
+
504
+ static ssize_t store_multicast_membership_interval (
505
+ struct device * d , struct device_attribute * attr , const char * buf ,
506
+ size_t len )
507
+ {
508
+ return store_bridge_parm (d , buf , len , set_membership_interval );
509
+ }
510
+ static DEVICE_ATTR (multicast_membership_interval , S_IRUGO | S_IWUSR ,
511
+ show_multicast_membership_interval ,
512
+ store_multicast_membership_interval ) ;
513
+
514
+ static ssize_t show_multicast_querier_interval (struct device * d ,
515
+ struct device_attribute * attr ,
516
+ char * buf )
517
+ {
518
+ struct net_bridge * br = to_bridge (d );
519
+ return sprintf (buf , "%lu\n" ,
520
+ jiffies_to_clock_t (br -> multicast_querier_interval ));
521
+ }
522
+
523
+ static int set_querier_interval (struct net_bridge * br , unsigned long val )
524
+ {
525
+ br -> multicast_querier_interval = clock_t_to_jiffies (val );
526
+ return 0 ;
527
+ }
528
+
529
+ static ssize_t store_multicast_querier_interval (struct device * d ,
530
+ struct device_attribute * attr ,
531
+ const char * buf , size_t len )
532
+ {
533
+ return store_bridge_parm (d , buf , len , set_querier_interval );
534
+ }
535
+ static DEVICE_ATTR (multicast_querier_interval , S_IRUGO | S_IWUSR ,
536
+ show_multicast_querier_interval ,
537
+ store_multicast_querier_interval ) ;
538
+
539
+ static ssize_t show_multicast_query_interval (struct device * d ,
540
+ struct device_attribute * attr ,
541
+ char * buf )
542
+ {
543
+ struct net_bridge * br = to_bridge (d );
544
+ return sprintf (buf , "%lu\n" ,
545
+ jiffies_to_clock_t (br -> multicast_query_interval ));
546
+ }
547
+
548
+ static int set_query_interval (struct net_bridge * br , unsigned long val )
549
+ {
550
+ br -> multicast_query_interval = clock_t_to_jiffies (val );
551
+ return 0 ;
552
+ }
553
+
554
+ static ssize_t store_multicast_query_interval (struct device * d ,
555
+ struct device_attribute * attr ,
556
+ const char * buf , size_t len )
557
+ {
558
+ return store_bridge_parm (d , buf , len , set_query_interval );
559
+ }
560
+ static DEVICE_ATTR (multicast_query_interval , S_IRUGO | S_IWUSR ,
561
+ show_multicast_query_interval ,
562
+ store_multicast_query_interval ) ;
563
+
564
+ static ssize_t show_multicast_query_response_interval (
565
+ struct device * d , struct device_attribute * attr , char * buf )
566
+ {
567
+ struct net_bridge * br = to_bridge (d );
568
+ return sprintf (
569
+ buf , "%lu\n" ,
570
+ jiffies_to_clock_t (br -> multicast_query_response_interval ));
571
+ }
572
+
573
+ static int set_query_response_interval (struct net_bridge * br , unsigned long val )
574
+ {
575
+ br -> multicast_query_response_interval = clock_t_to_jiffies (val );
576
+ return 0 ;
577
+ }
578
+
579
+ static ssize_t store_multicast_query_response_interval (
580
+ struct device * d , struct device_attribute * attr , const char * buf ,
581
+ size_t len )
582
+ {
583
+ return store_bridge_parm (d , buf , len , set_query_response_interval );
584
+ }
585
+ static DEVICE_ATTR (multicast_query_response_interval , S_IRUGO | S_IWUSR ,
586
+ show_multicast_query_response_interval ,
587
+ store_multicast_query_response_interval ) ;
588
+
589
+ static ssize_t show_multicast_startup_query_interval (
590
+ struct device * d , struct device_attribute * attr , char * buf )
591
+ {
592
+ struct net_bridge * br = to_bridge (d );
593
+ return sprintf (
594
+ buf , "%lu\n" ,
595
+ jiffies_to_clock_t (br -> multicast_startup_query_interval ));
596
+ }
597
+
598
+ static int set_startup_query_interval (struct net_bridge * br , unsigned long val )
599
+ {
600
+ br -> multicast_startup_query_interval = clock_t_to_jiffies (val );
601
+ return 0 ;
602
+ }
603
+
604
+ static ssize_t store_multicast_startup_query_interval (
605
+ struct device * d , struct device_attribute * attr , const char * buf ,
606
+ size_t len )
607
+ {
608
+ return store_bridge_parm (d , buf , len , set_startup_query_interval );
609
+ }
610
+ static DEVICE_ATTR (multicast_startup_query_interval , S_IRUGO | S_IWUSR ,
611
+ show_multicast_startup_query_interval ,
612
+ store_multicast_startup_query_interval ) ;
418
613
#endif
419
614
420
615
static struct attribute * bridge_attrs [] = {
@@ -441,6 +636,14 @@ static struct attribute *bridge_attrs[] = {
441
636
& dev_attr_multicast_snooping .attr ,
442
637
& dev_attr_hash_elasticity .attr ,
443
638
& dev_attr_hash_max .attr ,
639
+ & dev_attr_multicast_last_member_count .attr ,
640
+ & dev_attr_multicast_startup_query_count .attr ,
641
+ & dev_attr_multicast_last_member_interval .attr ,
642
+ & dev_attr_multicast_membership_interval .attr ,
643
+ & dev_attr_multicast_querier_interval .attr ,
644
+ & dev_attr_multicast_query_interval .attr ,
645
+ & dev_attr_multicast_query_response_interval .attr ,
646
+ & dev_attr_multicast_startup_query_interval .attr ,
444
647
#endif
445
648
NULL
446
649
};
0 commit comments