Lines Matching +full:- +full:d +full:-
1 // SPDX-License-Identifier: GPL-2.0-or-later
31 static ssize_t store_bridge_parm(struct device *d,
36 struct net_bridge *br = to_bridge(d);
41 if (!ns_capable(dev_net(br->dev)->user_ns, CAP_NET_ADMIN))
42 return -EPERM;
53 netdev_state_change(br->dev);
66 static ssize_t forward_delay_show(struct device *d,
69 struct net_bridge *br = to_bridge(d);
70 return sprintf(buf, "%lu\n", jiffies_to_clock_t(br->forward_delay));
79 static ssize_t forward_delay_store(struct device *d,
83 return store_bridge_parm(d, buf, len, set_forward_delay);
87 static ssize_t hello_time_show(struct device *d, struct device_attribute *attr,
91 jiffies_to_clock_t(to_bridge(d)->hello_time));
100 static ssize_t hello_time_store(struct device *d,
104 return store_bridge_parm(d, buf, len, set_hello_time);
108 static ssize_t max_age_show(struct device *d, struct device_attribute *attr,
112 jiffies_to_clock_t(to_bridge(d)->max_age));
121 static ssize_t max_age_store(struct device *d, struct device_attribute *attr,
124 return store_bridge_parm(d, buf, len, set_max_age);
128 static ssize_t ageing_time_show(struct device *d,
131 struct net_bridge *br = to_bridge(d);
132 return sprintf(buf, "%lu\n", jiffies_to_clock_t(br->ageing_time));
141 static ssize_t ageing_time_store(struct device *d,
145 return store_bridge_parm(d, buf, len, set_ageing_time);
149 static ssize_t stp_state_show(struct device *d,
152 struct net_bridge *br = to_bridge(d);
153 return sprintf(buf, "%d\n", br->stp_enabled);
163 static ssize_t stp_state_store(struct device *d,
167 return store_bridge_parm(d, buf, len, set_stp_state);
171 static ssize_t group_fwd_mask_show(struct device *d,
175 struct net_bridge *br = to_bridge(d);
176 return sprintf(buf, "%#x\n", br->group_fwd_mask);
183 return -EINVAL;
185 br->group_fwd_mask = val;
190 static ssize_t group_fwd_mask_store(struct device *d,
195 return store_bridge_parm(d, buf, len, set_group_fwd_mask);
199 static ssize_t priority_show(struct device *d, struct device_attribute *attr,
202 struct net_bridge *br = to_bridge(d);
203 return sprintf(buf, "%d\n",
204 (br->bridge_id.prio[0] << 8) | br->bridge_id.prio[1]);
214 static ssize_t priority_store(struct device *d, struct device_attribute *attr,
217 return store_bridge_parm(d, buf, len, set_priority);
221 static ssize_t root_id_show(struct device *d, struct device_attribute *attr,
224 return br_show_bridge_id(buf, &to_bridge(d)->designated_root);
228 static ssize_t bridge_id_show(struct device *d, struct device_attribute *attr,
231 return br_show_bridge_id(buf, &to_bridge(d)->bridge_id);
235 static ssize_t root_port_show(struct device *d, struct device_attribute *attr,
238 return sprintf(buf, "%d\n", to_bridge(d)->root_port);
242 static ssize_t root_path_cost_show(struct device *d,
245 return sprintf(buf, "%d\n", to_bridge(d)->root_path_cost);
249 static ssize_t topology_change_show(struct device *d,
252 return sprintf(buf, "%d\n", to_bridge(d)->topology_change);
256 static ssize_t topology_change_detected_show(struct device *d,
260 struct net_bridge *br = to_bridge(d);
261 return sprintf(buf, "%d\n", br->topology_change_detected);
265 static ssize_t hello_timer_show(struct device *d,
268 struct net_bridge *br = to_bridge(d);
269 return sprintf(buf, "%ld\n", br_timer_value(&br->hello_timer));
273 static ssize_t tcn_timer_show(struct device *d, struct device_attribute *attr,
276 struct net_bridge *br = to_bridge(d);
277 return sprintf(buf, "%ld\n", br_timer_value(&br->tcn_timer));
281 static ssize_t topology_change_timer_show(struct device *d,
285 struct net_bridge *br = to_bridge(d);
286 return sprintf(buf, "%ld\n", br_timer_value(&br->topology_change_timer));
290 static ssize_t gc_timer_show(struct device *d, struct device_attribute *attr,
293 struct net_bridge *br = to_bridge(d);
294 return sprintf(buf, "%ld\n", br_timer_value(&br->gc_work.timer));
298 static ssize_t group_addr_show(struct device *d,
301 struct net_bridge *br = to_bridge(d);
302 return sprintf(buf, "%pM\n", br->group_addr);
305 static ssize_t group_addr_store(struct device *d,
309 struct net_bridge *br = to_bridge(d);
312 if (!ns_capable(dev_net(br->dev)->user_ns, CAP_NET_ADMIN))
313 return -EPERM;
316 return -EINVAL;
319 return -EINVAL;
324 return -EINVAL;
329 spin_lock_bh(&br->lock);
330 ether_addr_copy(br->group_addr, new_addr);
331 spin_unlock_bh(&br->lock);
335 netdev_state_change(br->dev);
355 static ssize_t flush_store(struct device *d,
359 return store_bridge_parm(d, buf, len, set_flush);
363 static ssize_t no_linklocal_learn_show(struct device *d,
367 struct net_bridge *br = to_bridge(d);
368 return sprintf(buf, "%d\n", br_boolopt_get(br, BR_BOOLOPT_NO_LL_LEARN));
377 static ssize_t no_linklocal_learn_store(struct device *d,
381 return store_bridge_parm(d, buf, len, set_no_linklocal_learn);
386 static ssize_t multicast_router_show(struct device *d,
389 struct net_bridge *br = to_bridge(d);
390 return sprintf(buf, "%d\n", br->multicast_ctx.multicast_router);
396 return br_multicast_set_router(&br->multicast_ctx, val);
399 static ssize_t multicast_router_store(struct device *d,
403 return store_bridge_parm(d, buf, len, set_multicast_router);
407 static ssize_t multicast_snooping_show(struct device *d,
411 struct net_bridge *br = to_bridge(d);
412 return sprintf(buf, "%d\n", br_opt_get(br, BROPT_MULTICAST_ENABLED));
415 static ssize_t multicast_snooping_store(struct device *d,
419 return store_bridge_parm(d, buf, len, br_multicast_toggle);
423 static ssize_t multicast_query_use_ifaddr_show(struct device *d,
427 struct net_bridge *br = to_bridge(d);
428 return sprintf(buf, "%d\n",
440 multicast_query_use_ifaddr_store(struct device *d,
444 return store_bridge_parm(d, buf, len, set_query_use_ifaddr);
448 static ssize_t multicast_querier_show(struct device *d,
452 struct net_bridge *br = to_bridge(d);
453 return sprintf(buf, "%d\n", br->multicast_ctx.multicast_querier);
459 return br_multicast_set_querier(&br->multicast_ctx, val);
462 static ssize_t multicast_querier_store(struct device *d,
466 return store_bridge_parm(d, buf, len, set_multicast_querier);
470 static ssize_t hash_elasticity_show(struct device *d,
485 static ssize_t hash_elasticity_store(struct device *d,
489 return store_bridge_parm(d, buf, len, set_elasticity);
493 static ssize_t hash_max_show(struct device *d, struct device_attribute *attr,
496 struct net_bridge *br = to_bridge(d);
497 return sprintf(buf, "%u\n", br->hash_max);
503 br->hash_max = val;
507 static ssize_t hash_max_store(struct device *d, struct device_attribute *attr,
510 return store_bridge_parm(d, buf, len, set_hash_max);
514 static ssize_t multicast_igmp_version_show(struct device *d,
518 struct net_bridge *br = to_bridge(d);
520 return sprintf(buf, "%u\n", br->multicast_ctx.multicast_igmp_version);
526 return br_multicast_set_igmp_version(&br->multicast_ctx, val);
529 static ssize_t multicast_igmp_version_store(struct device *d,
533 return store_bridge_parm(d, buf, len, set_multicast_igmp_version);
537 static ssize_t multicast_last_member_count_show(struct device *d,
541 struct net_bridge *br = to_bridge(d);
542 return sprintf(buf, "%u\n", br->multicast_ctx.multicast_last_member_count);
548 br->multicast_ctx.multicast_last_member_count = val;
552 static ssize_t multicast_last_member_count_store(struct device *d,
556 return store_bridge_parm(d, buf, len, set_last_member_count);
561 struct device *d, struct device_attribute *attr, char *buf)
563 struct net_bridge *br = to_bridge(d);
564 return sprintf(buf, "%u\n", br->multicast_ctx.multicast_startup_query_count);
570 br->multicast_ctx.multicast_startup_query_count = val;
575 struct device *d, struct device_attribute *attr, const char *buf,
578 return store_bridge_parm(d, buf, len, set_startup_query_count);
583 struct device *d, struct device_attribute *attr, char *buf)
585 struct net_bridge *br = to_bridge(d);
587 jiffies_to_clock_t(br->multicast_ctx.multicast_last_member_interval));
593 br->multicast_ctx.multicast_last_member_interval = clock_t_to_jiffies(val);
598 struct device *d, struct device_attribute *attr, const char *buf,
601 return store_bridge_parm(d, buf, len, set_last_member_interval);
606 struct device *d, struct device_attribute *attr, char *buf)
608 struct net_bridge *br = to_bridge(d);
610 jiffies_to_clock_t(br->multicast_ctx.multicast_membership_interval));
616 br->multicast_ctx.multicast_membership_interval = clock_t_to_jiffies(val);
621 struct device *d, struct device_attribute *attr, const char *buf,
624 return store_bridge_parm(d, buf, len, set_membership_interval);
628 static ssize_t multicast_querier_interval_show(struct device *d,
632 struct net_bridge *br = to_bridge(d);
634 jiffies_to_clock_t(br->multicast_ctx.multicast_querier_interval));
640 br->multicast_ctx.multicast_querier_interval = clock_t_to_jiffies(val);
644 static ssize_t multicast_querier_interval_store(struct device *d,
648 return store_bridge_parm(d, buf, len, set_querier_interval);
652 static ssize_t multicast_query_interval_show(struct device *d,
656 struct net_bridge *br = to_bridge(d);
658 jiffies_to_clock_t(br->multicast_ctx.multicast_query_interval));
664 br_multicast_set_query_intvl(&br->multicast_ctx, val);
668 static ssize_t multicast_query_interval_store(struct device *d,
672 return store_bridge_parm(d, buf, len, set_query_interval);
677 struct device *d, struct device_attribute *attr, char *buf)
679 struct net_bridge *br = to_bridge(d);
682 jiffies_to_clock_t(br->multicast_ctx.multicast_query_response_interval));
688 br->multicast_ctx.multicast_query_response_interval = clock_t_to_jiffies(val);
693 struct device *d, struct device_attribute *attr, const char *buf,
696 return store_bridge_parm(d, buf, len, set_query_response_interval);
701 struct device *d, struct device_attribute *attr, char *buf)
703 struct net_bridge *br = to_bridge(d);
706 jiffies_to_clock_t(br->multicast_ctx.multicast_startup_query_interval));
712 br_multicast_set_startup_query_intvl(&br->multicast_ctx, val);
717 struct device *d, struct device_attribute *attr, const char *buf,
720 return store_bridge_parm(d, buf, len, set_startup_query_interval);
724 static ssize_t multicast_stats_enabled_show(struct device *d,
728 struct net_bridge *br = to_bridge(d);
730 return sprintf(buf, "%d\n",
741 static ssize_t multicast_stats_enabled_store(struct device *d,
746 return store_bridge_parm(d, buf, len, set_stats_enabled);
751 static ssize_t multicast_mld_version_show(struct device *d,
755 struct net_bridge *br = to_bridge(d);
757 return sprintf(buf, "%u\n", br->multicast_ctx.multicast_mld_version);
763 return br_multicast_set_mld_version(&br->multicast_ctx, val);
766 static ssize_t multicast_mld_version_store(struct device *d,
770 return store_bridge_parm(d, buf, len, set_multicast_mld_version);
777 struct device *d, struct device_attribute *attr, char *buf)
779 struct net_bridge *br = to_bridge(d);
791 struct device *d, struct device_attribute *attr, const char *buf,
794 return store_bridge_parm(d, buf, len, set_nf_call_iptables);
799 struct device *d, struct device_attribute *attr, char *buf)
801 struct net_bridge *br = to_bridge(d);
813 struct device *d, struct device_attribute *attr, const char *buf,
816 return store_bridge_parm(d, buf, len, set_nf_call_ip6tables);
821 struct device *d, struct device_attribute *attr, char *buf)
823 struct net_bridge *br = to_bridge(d);
835 struct device *d, struct device_attribute *attr, const char *buf,
838 return store_bridge_parm(d, buf, len, set_nf_call_arptables);
843 static ssize_t vlan_filtering_show(struct device *d,
847 struct net_bridge *br = to_bridge(d);
848 return sprintf(buf, "%d\n", br_opt_get(br, BROPT_VLAN_ENABLED));
851 static ssize_t vlan_filtering_store(struct device *d,
855 return store_bridge_parm(d, buf, len, br_vlan_filter_toggle);
859 static ssize_t vlan_protocol_show(struct device *d,
863 struct net_bridge *br = to_bridge(d);
864 return sprintf(buf, "%#06x\n", ntohs(br->vlan_proto));
867 static ssize_t vlan_protocol_store(struct device *d,
871 return store_bridge_parm(d, buf, len, br_vlan_set_proto);
875 static ssize_t default_pvid_show(struct device *d,
879 struct net_bridge *br = to_bridge(d);
880 return sprintf(buf, "%d\n", br->default_pvid);
883 static ssize_t default_pvid_store(struct device *d,
887 return store_bridge_parm(d, buf, len, br_vlan_set_default_pvid);
891 static ssize_t vlan_stats_enabled_show(struct device *d,
895 struct net_bridge *br = to_bridge(d);
905 static ssize_t vlan_stats_enabled_store(struct device *d,
909 return store_bridge_parm(d, buf, len, set_vlan_stats_enabled);
913 static ssize_t vlan_stats_per_port_show(struct device *d,
917 struct net_bridge *br = to_bridge(d);
927 static ssize_t vlan_stats_per_port_store(struct device *d,
931 return store_bridge_parm(d, buf, len, set_vlan_stats_per_port);
1014 return -EINVAL;
1045 struct kobject *brobj = &dev->dev.kobj;
1052 __func__, dev->name, bridge_group.name);
1059 __func__, dev->name, bridge_forward.attr.name);
1063 br->ifobj = kobject_create_and_add(SYSFS_BRIDGE_PORT_SUBDIR, brobj);
1064 if (!br->ifobj) {
1066 __func__, dev->name, SYSFS_BRIDGE_PORT_SUBDIR);
1067 err = -ENOMEM;
1072 sysfs_remove_bin_file(&dev->dev.kobj, &bridge_forward);
1074 sysfs_remove_group(&dev->dev.kobj, &bridge_group);
1082 struct kobject *kobj = &dev->dev.kobj;
1085 kobject_put(br->ifobj);