|
|
@@ -41,20 +41,27 @@ static ssize_t show_##_name(struct net_bridge_port *p, char *buf) \
|
|
|
} \
|
|
|
static int store_##_name(struct net_bridge_port *p, unsigned long v) \
|
|
|
{ \
|
|
|
- unsigned long flags = p->flags; \
|
|
|
- if (v) \
|
|
|
- flags |= _mask; \
|
|
|
- else \
|
|
|
- flags &= ~_mask; \
|
|
|
- if (flags != p->flags) { \
|
|
|
- p->flags = flags; \
|
|
|
- br_ifinfo_notify(RTM_NEWLINK, p); \
|
|
|
- } \
|
|
|
- return 0; \
|
|
|
+ return store_flag(p, v, _mask); \
|
|
|
} \
|
|
|
static BRPORT_ATTR(_name, S_IRUGO | S_IWUSR, \
|
|
|
show_##_name, store_##_name)
|
|
|
|
|
|
+static int store_flag(struct net_bridge_port *p, unsigned long v,
|
|
|
+ unsigned long mask)
|
|
|
+{
|
|
|
+ unsigned long flags = p->flags;
|
|
|
+
|
|
|
+ if (v)
|
|
|
+ flags |= mask;
|
|
|
+ else
|
|
|
+ flags &= ~mask;
|
|
|
+
|
|
|
+ if (flags != p->flags) {
|
|
|
+ p->flags = flags;
|
|
|
+ br_ifinfo_notify(RTM_NEWLINK, p);
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
|
|
|
static ssize_t show_path_cost(struct net_bridge_port *p, char *buf)
|
|
|
{
|