* [PATCH iproute2 00/21] bridge: complete netlink support
@ 2016-02-08 11:55 Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
` (20 more replies)
0 siblings, 21 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Hi,
After I added support for all attributes in the kernel, it's time to make
use of them in iproute2. I've tested changing/viewing all of the
attributes. I'll send a separate set to add support for the ports
attributes.
For the future, adding a switch to change to "seconds.milliseconds" format
for the timers would be helpful (I've stuck to the currently used clock_t
export to be consistent).
Cheers,
Nik
Nikolay Aleksandrov (21):
iplink: bridge: export bridge_id and designated_root
iplink: bridge: export root_(port|path_cost), topology_change and
change_detected
iplink: bridge: export read-only timers
iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK
iplink: bridge: add support for IFLA_BR_GROUP_ADDR
iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID
iplink: bridge: add support for IFLA_BR_MCAST_ROUTER
iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING
iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR
iplink: bridge: add support for IFLA_BR_MCAST_QUERIER
iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY
iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX
iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT
iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT
iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL
iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL
iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL
iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL
iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL
iplink: bridge: add support for netfilter call attributes
include/utils.h | 1 -
ip/iplink_bridge.c | 356 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 356 insertions(+), 1 deletion(-)
--
2.4.3
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 22:21 ` Stephen Hemminger
2016-02-08 11:55 ` [PATCH iproute2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected Nikolay Aleksandrov
` (19 subsequent siblings)
20 siblings, 1 reply; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Netlink returns the bridge_id and designated_root, we just need to
make them visible.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 00804093dcb5..6978e58e6b74 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -39,6 +39,15 @@ static void explain(void)
print_explain(stderr);
}
+static void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf,
+ size_t len)
+{
+ const unsigned char *x = (const unsigned char *)id;
+
+ snprintf(buf, len, "%.2x%.2x.%.2x%.2x%.2x%.2x%.2x%.2x", x[0], x[1],
+ x[2], x[3], x[4], x[5], x[6], x[7]);
+}
+
static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
struct nlmsghdr *n)
{
@@ -155,6 +164,22 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
ll_proto_n2a(rta_getattr_u16(tb[IFLA_BR_VLAN_PROTOCOL]),
b1, sizeof(b1)));
}
+
+ if (tb[IFLA_BR_BRIDGE_ID]) {
+ char bridge_id[32];
+
+ br_dump_bridge_id(RTA_DATA(tb[IFLA_BR_BRIDGE_ID]), bridge_id,
+ sizeof(bridge_id));
+ fprintf(f, "bridge_id %s ", bridge_id);
+ }
+
+ if (tb[IFLA_BR_ROOT_ID]) {
+ char root_id[32];
+
+ br_dump_bridge_id(RTA_DATA(tb[IFLA_BR_BRIDGE_ID]), root_id,
+ sizeof(root_id));
+ fprintf(f, "designated_root %s ", root_id);
+ }
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 03/21] iplink: bridge: export read-only timers Nikolay Aleksandrov
` (18 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Netlink already export these values, we just need to make them visible.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 6978e58e6b74..d9a725b0be0f 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -180,6 +180,22 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
sizeof(root_id));
fprintf(f, "designated_root %s ", root_id);
}
+
+ if (tb[IFLA_BR_ROOT_PORT])
+ fprintf(f, "root_port %u ",
+ rta_getattr_u16(tb[IFLA_BR_ROOT_PORT]));
+
+ if (tb[IFLA_BR_ROOT_PATH_COST])
+ fprintf(f, "root_path_cost %u ",
+ rta_getattr_u32(tb[IFLA_BR_ROOT_PATH_COST]));
+
+ if (tb[IFLA_BR_TOPOLOGY_CHANGE])
+ fprintf(f, "topology_change %u ",
+ rta_getattr_u8(tb[IFLA_BR_TOPOLOGY_CHANGE]));
+
+ if (tb[IFLA_BR_TOPOLOGY_CHANGE_DETECTED])
+ fprintf(f, "topology_change_detected %u ",
+ rta_getattr_u8(tb[IFLA_BR_TOPOLOGY_CHANGE_DETECTED]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 03/21] iplink: bridge: export read-only timers
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 22:23 ` Stephen Hemminger
2016-02-08 11:55 ` [PATCH iproute2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK Nikolay Aleksandrov
` (17 subsequent siblings)
20 siblings, 1 reply; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Netlink already provides hello_timer, tcn_timer, topology_change_timer
and gc_timer, so let's make them visible.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
include/utils.h | 1 -
ip/iplink_bridge.c | 16 ++++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/include/utils.h b/include/utils.h
index 7310f4e0e5db..f109521a904e 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -175,7 +175,6 @@ static inline __u32 nl_mgrp(__u32 group)
return group ? (1 << (group - 1)) : 0;
}
-
int print_timestamp(FILE *fp);
void print_nlmsg_timestamp(FILE *fp, const struct nlmsghdr *n);
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index d9a725b0be0f..8504be5625fa 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -196,6 +196,22 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_TOPOLOGY_CHANGE_DETECTED])
fprintf(f, "topology_change_detected %u ",
rta_getattr_u8(tb[IFLA_BR_TOPOLOGY_CHANGE_DETECTED]));
+
+ if (tb[IFLA_BR_HELLO_TIMER])
+ fprintf(f, "hello_timer %llu ",
+ rta_getattr_u64(tb[IFLA_BR_HELLO_TIMER]));
+
+ if (tb[IFLA_BR_TCN_TIMER])
+ fprintf(f, "tcn_timer %llu ",
+ rta_getattr_u64(tb[IFLA_BR_TCN_TIMER]));
+
+ if (tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER])
+ fprintf(f, "topology_change_timer %llu ",
+ rta_getattr_u64(tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER]));
+
+ if (tb[IFLA_BR_GC_TIMER])
+ fprintf(f, "gc_timer %llu ",
+ rta_getattr_u64(tb[IFLA_BR_GC_TIMER]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (2 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 03/21] iplink: bridge: export read-only timers Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR Nikolay Aleksandrov
` (16 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_GROUP_FWD_MASK attribute
in iproute2 so it can change the group forwarding mask.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 8504be5625fa..fb448f9f863d 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -27,6 +27,7 @@ static void print_explain(FILE *f)
" [ ageing_time AGEING_TIME ]\n"
" [ stp_state STP_STATE ]\n"
" [ priority PRIORITY ]\n"
+ " [ group_fwd_mask MASK ]\n"
" [ vlan_filtering VLAN_FILTERING ]\n"
" [ vlan_protocol VLAN_PROTOCOL ]\n"
"\n"
@@ -110,6 +111,14 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
return -1;
}
addattr16(n, 1024, IFLA_BR_VLAN_PROTOCOL, vlan_proto);
+ } else if (matches(*argv, "group_fwd_mask") == 0) {
+ __u16 fwd_mask;
+
+ NEXT_ARG();
+ if (get_u16(&fwd_mask, *argv, 0))
+ invarg("invalid group_fwd_mask", *argv);
+
+ addattr16(n, 1024, IFLA_BR_GROUP_FWD_MASK, fwd_mask);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -212,6 +221,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_GC_TIMER])
fprintf(f, "gc_timer %llu ",
rta_getattr_u64(tb[IFLA_BR_GC_TIMER]));
+
+ if (tb[IFLA_BR_GROUP_FWD_MASK])
+ fprintf(f, "group_fwd_mask %#x ",
+ rta_getattr_u16(tb[IFLA_BR_GROUP_FWD_MASK]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (3 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID Nikolay Aleksandrov
` (15 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_GROUP_ADDR attribute
in iproute2 so it can change the group address.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index fb448f9f863d..3d343f7649fe 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -28,6 +28,7 @@ static void print_explain(FILE *f)
" [ stp_state STP_STATE ]\n"
" [ priority PRIORITY ]\n"
" [ group_fwd_mask MASK ]\n"
+ " [ group_address ADDRESS ]\n"
" [ vlan_filtering VLAN_FILTERING ]\n"
" [ vlan_protocol VLAN_PROTOCOL ]\n"
"\n"
@@ -119,6 +120,15 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
invarg("invalid group_fwd_mask", *argv);
addattr16(n, 1024, IFLA_BR_GROUP_FWD_MASK, fwd_mask);
+ } else if (matches(*argv, "group_address") == 0) {
+ char llabuf[32];
+ int len;
+
+ NEXT_ARG();
+ len = ll_addr_a2n(llabuf, sizeof(llabuf), *argv);
+ if (len < 0)
+ return -1;
+ addattr_l(n, 1024, IFLA_BR_GROUP_ADDR, llabuf, len);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -225,6 +235,15 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_GROUP_FWD_MASK])
fprintf(f, "group_fwd_mask %#x ",
rta_getattr_u16(tb[IFLA_BR_GROUP_FWD_MASK]));
+
+ if (tb[IFLA_BR_GROUP_ADDR]) {
+ SPRINT_BUF(mac);
+
+ fprintf(f, "group_address %s ",
+ ll_addr_n2a(RTA_DATA(tb[IFLA_BR_GROUP_ADDR]),
+ RTA_PAYLOAD(tb[IFLA_BR_GROUP_ADDR]),
+ 1 /*ARPHDR_ETHER*/, mac, sizeof(mac)));
+ }
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (4 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER Nikolay Aleksandrov
` (14 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_VLAN_DEFAULT_PVID
attribute in iproute2 so it can change the default pvid.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 3d343f7649fe..e8bc66b498b3 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -31,6 +31,7 @@ static void print_explain(FILE *f)
" [ group_address ADDRESS ]\n"
" [ vlan_filtering VLAN_FILTERING ]\n"
" [ vlan_protocol VLAN_PROTOCOL ]\n"
+ " [ vlan_default_pvid VLAN_DEFAULT_PVID ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -129,6 +130,15 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
if (len < 0)
return -1;
addattr_l(n, 1024, IFLA_BR_GROUP_ADDR, llabuf, len);
+ } else if (matches(*argv, "vlan_default_pvid") == 0) {
+ __u16 default_pvid;
+
+ NEXT_ARG();
+ if (get_u16(&default_pvid, *argv, 0))
+ invarg("invalid vlan_default_pvid", *argv);
+
+ addattr16(n, 1024, IFLA_BR_VLAN_DEFAULT_PVID,
+ default_pvid);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -232,6 +242,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
fprintf(f, "gc_timer %llu ",
rta_getattr_u64(tb[IFLA_BR_GC_TIMER]));
+ if (tb[IFLA_BR_VLAN_DEFAULT_PVID])
+ fprintf(f, "vlan_default_pvid %u ",
+ rta_getattr_u16(tb[IFLA_BR_VLAN_DEFAULT_PVID]));
+
if (tb[IFLA_BR_GROUP_FWD_MASK])
fprintf(f, "group_fwd_mask %#x ",
rta_getattr_u16(tb[IFLA_BR_GROUP_FWD_MASK]));
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (5 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING Nikolay Aleksandrov
` (13 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_ROUTER attribute
in iproute2 so it can change the multicast router value.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index e8bc66b498b3..11577a8994a3 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -32,6 +32,7 @@ static void print_explain(FILE *f)
" [ vlan_filtering VLAN_FILTERING ]\n"
" [ vlan_protocol VLAN_PROTOCOL ]\n"
" [ vlan_default_pvid VLAN_DEFAULT_PVID ]\n"
+ " [ mcast_router MULTICAST_ROUTER ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -139,6 +140,14 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr16(n, 1024, IFLA_BR_VLAN_DEFAULT_PVID,
default_pvid);
+ } else if (matches(*argv, "mcast_router") == 0) {
+ __u8 mcast_router;
+
+ NEXT_ARG();
+ if (get_u8(&mcast_router, *argv, 0))
+ invarg("invalid mcast_router", *argv);
+
+ addattr8(n, 1024, IFLA_BR_MCAST_ROUTER, mcast_router);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -258,6 +267,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
RTA_PAYLOAD(tb[IFLA_BR_GROUP_ADDR]),
1 /*ARPHDR_ETHER*/, mac, sizeof(mac)));
}
+
+ if (tb[IFLA_BR_MCAST_ROUTER])
+ fprintf(f, "mcast_router %u ",
+ rta_getattr_u8(tb[IFLA_BR_MCAST_ROUTER]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (6 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR Nikolay Aleksandrov
` (12 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_SNOOPING attribute
in iproute2 so it can change the multicast snooping value.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 11577a8994a3..208d155df440 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -32,6 +32,7 @@ static void print_explain(FILE *f)
" [ vlan_filtering VLAN_FILTERING ]\n"
" [ vlan_protocol VLAN_PROTOCOL ]\n"
" [ vlan_default_pvid VLAN_DEFAULT_PVID ]\n"
+ " [ mcast_snooping MULTICAST_SNOOPING ]\n"
" [ mcast_router MULTICAST_ROUTER ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
@@ -148,6 +149,14 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
invarg("invalid mcast_router", *argv);
addattr8(n, 1024, IFLA_BR_MCAST_ROUTER, mcast_router);
+ } else if (matches(*argv, "mcast_snooping") == 0) {
+ __u8 mcast_snoop;
+
+ NEXT_ARG();
+ if (get_u8(&mcast_snoop, *argv, 0))
+ invarg("invalid mcast_snooping", *argv);
+
+ addattr8(n, 1024, IFLA_BR_MCAST_SNOOPING, mcast_snoop);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -268,6 +277,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
1 /*ARPHDR_ETHER*/, mac, sizeof(mac)));
}
+ if (tb[IFLA_BR_MCAST_SNOOPING])
+ fprintf(f, "mcast_snooping %u ",
+ rta_getattr_u8(tb[IFLA_BR_MCAST_SNOOPING]));
+
if (tb[IFLA_BR_MCAST_ROUTER])
fprintf(f, "mcast_router %u ",
rta_getattr_u8(tb[IFLA_BR_MCAST_ROUTER]));
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (7 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER Nikolay Aleksandrov
` (11 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_QUERY_USE_IFADDR
attribute in iproute2 so it can toggle the multicast_query_use_ifaddr val.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 208d155df440..30f7b8014e2a 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -34,6 +34,7 @@ static void print_explain(FILE *f)
" [ vlan_default_pvid VLAN_DEFAULT_PVID ]\n"
" [ mcast_snooping MULTICAST_SNOOPING ]\n"
" [ mcast_router MULTICAST_ROUTER ]\n"
+ " [ mcast_query_use_ifaddr MCAST_QUERY_USE_IFADDR ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -157,6 +158,16 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
invarg("invalid mcast_snooping", *argv);
addattr8(n, 1024, IFLA_BR_MCAST_SNOOPING, mcast_snoop);
+ } else if (matches(*argv, "mcast_query_use_ifaddr") == 0) {
+ __u8 mcast_qui;
+
+ NEXT_ARG();
+ if (get_u8(&mcast_qui, *argv, 0))
+ invarg("invalid mcast_query_use_ifaddr",
+ *argv);
+
+ addattr8(n, 1024, IFLA_BR_MCAST_QUERY_USE_IFADDR,
+ mcast_qui);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -284,6 +295,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_ROUTER])
fprintf(f, "mcast_router %u ",
rta_getattr_u8(tb[IFLA_BR_MCAST_ROUTER]));
+
+ if (tb[IFLA_BR_MCAST_QUERY_USE_IFADDR])
+ fprintf(f, "mcast_query_use_ifaddr %u ",
+ rta_getattr_u8(tb[IFLA_BR_MCAST_QUERY_USE_IFADDR]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (8 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY Nikolay Aleksandrov
` (10 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_QUERIER attribute
in iproute2 so it can toggle the mcast querier value.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 30f7b8014e2a..0d5c70312f1d 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -35,6 +35,7 @@ static void print_explain(FILE *f)
" [ mcast_snooping MULTICAST_SNOOPING ]\n"
" [ mcast_router MULTICAST_ROUTER ]\n"
" [ mcast_query_use_ifaddr MCAST_QUERY_USE_IFADDR ]\n"
+ " [ mcast_querier MULTICAST_QUERIER ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -168,6 +169,14 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr8(n, 1024, IFLA_BR_MCAST_QUERY_USE_IFADDR,
mcast_qui);
+ } else if (matches(*argv, "mcast_querier") == 0) {
+ __u8 mcast_querier;
+
+ NEXT_ARG();
+ if (get_u8(&mcast_querier, *argv, 0))
+ invarg("invalid mcast_querier", *argv);
+
+ addattr8(n, 1024, IFLA_BR_MCAST_QUERIER, mcast_querier);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -299,6 +308,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_QUERY_USE_IFADDR])
fprintf(f, "mcast_query_use_ifaddr %u ",
rta_getattr_u8(tb[IFLA_BR_MCAST_QUERY_USE_IFADDR]));
+
+ if (tb[IFLA_BR_MCAST_QUERIER])
+ fprintf(f, "mcast_querier %u ",
+ rta_getattr_u8(tb[IFLA_BR_MCAST_QUERIER]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (9 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX Nikolay Aleksandrov
` (9 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_HASH_ELASTICTITY
attribute in iproute2 so it can change the hash elasticity value.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 0d5c70312f1d..14aae3e9b0d2 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -36,6 +36,7 @@ static void print_explain(FILE *f)
" [ mcast_router MULTICAST_ROUTER ]\n"
" [ mcast_query_use_ifaddr MCAST_QUERY_USE_IFADDR ]\n"
" [ mcast_querier MULTICAST_QUERIER ]\n"
+ " [ mcast_hash_elasticity HASH_ELASTICITY ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -177,6 +178,16 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
invarg("invalid mcast_querier", *argv);
addattr8(n, 1024, IFLA_BR_MCAST_QUERIER, mcast_querier);
+ } else if (matches(*argv, "mcast_hash_elasticity") == 0) {
+ __u32 mcast_hash_el;
+
+ NEXT_ARG();
+ if (get_u32(&mcast_hash_el, *argv, 0))
+ invarg("invalid mcast_hash_elasticity",
+ *argv);
+
+ addattr32(n, 1024, IFLA_BR_MCAST_HASH_ELASTICITY,
+ mcast_hash_el);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -312,6 +323,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_QUERIER])
fprintf(f, "mcast_querier %u ",
rta_getattr_u8(tb[IFLA_BR_MCAST_QUERIER]));
+
+ if (tb[IFLA_BR_MCAST_HASH_ELASTICITY])
+ fprintf(f, "mcast_hash_elasticity %u ",
+ rta_getattr_u32(tb[IFLA_BR_MCAST_HASH_ELASTICITY]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (10 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT Nikolay Aleksandrov
` (8 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_HASH_MAX attribute
in iproute2 so it can change the maximum hashed entries.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 14aae3e9b0d2..d15bd45dcdf6 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -37,6 +37,7 @@ static void print_explain(FILE *f)
" [ mcast_query_use_ifaddr MCAST_QUERY_USE_IFADDR ]\n"
" [ mcast_querier MULTICAST_QUERIER ]\n"
" [ mcast_hash_elasticity HASH_ELASTICITY ]\n"
+ " [ mcast_hash_max HASH_MAX ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -188,6 +189,15 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr32(n, 1024, IFLA_BR_MCAST_HASH_ELASTICITY,
mcast_hash_el);
+ } else if (matches(*argv, "mcast_hash_max") == 0) {
+ __u32 mcast_hash_max;
+
+ NEXT_ARG();
+ if (get_u32(&mcast_hash_max, *argv, 0))
+ invarg("invalid mcast_hash_max", *argv);
+
+ addattr32(n, 1024, IFLA_BR_MCAST_HASH_MAX,
+ mcast_hash_max);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -327,6 +337,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_HASH_ELASTICITY])
fprintf(f, "mcast_hash_elasticity %u ",
rta_getattr_u32(tb[IFLA_BR_MCAST_HASH_ELASTICITY]));
+
+ if (tb[IFLA_BR_MCAST_HASH_MAX])
+ fprintf(f, "mcast_hash_max %u ",
+ rta_getattr_u32(tb[IFLA_BR_MCAST_HASH_MAX]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (11 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT Nikolay Aleksandrov
` (7 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_LAST_MEMBER_CNT
attribute in iproute2 so it can change the last member count value.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index d15bd45dcdf6..d98b126698e2 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -38,6 +38,7 @@ static void print_explain(FILE *f)
" [ mcast_querier MULTICAST_QUERIER ]\n"
" [ mcast_hash_elasticity HASH_ELASTICITY ]\n"
" [ mcast_hash_max HASH_MAX ]\n"
+ " [ mcast_last_member_count LAST_MEMBER_COUNT ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -198,6 +199,16 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr32(n, 1024, IFLA_BR_MCAST_HASH_MAX,
mcast_hash_max);
+ } else if (matches(*argv, "mcast_last_member_count") == 0) {
+ __u32 mcast_lmc;
+
+ NEXT_ARG();
+ if (get_u32(&mcast_lmc, *argv, 0))
+ invarg("invalid mcast_last_member_count",
+ *argv);
+
+ addattr32(n, 1024, IFLA_BR_MCAST_LAST_MEMBER_CNT,
+ mcast_lmc);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -341,6 +352,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_HASH_MAX])
fprintf(f, "mcast_hash_max %u ",
rta_getattr_u32(tb[IFLA_BR_MCAST_HASH_MAX]));
+
+ if (tb[IFLA_BR_MCAST_LAST_MEMBER_CNT])
+ fprintf(f, "mcast_last_member_count %u ",
+ rta_getattr_u32(tb[IFLA_BR_MCAST_LAST_MEMBER_CNT]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (12 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL Nikolay Aleksandrov
` (6 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_STARTUP_QUERY_CNT
attribute in iproute2 so it can change the startup query count.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index d98b126698e2..d10a9255eb56 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -39,6 +39,7 @@ static void print_explain(FILE *f)
" [ mcast_hash_elasticity HASH_ELASTICITY ]\n"
" [ mcast_hash_max HASH_MAX ]\n"
" [ mcast_last_member_count LAST_MEMBER_COUNT ]\n"
+ " [ mcast_startup_query_count STARTUP_QUERY_COUNT ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -209,6 +210,16 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr32(n, 1024, IFLA_BR_MCAST_LAST_MEMBER_CNT,
mcast_lmc);
+ } else if (matches(*argv, "mcast_startup_query_count") == 0) {
+ __u32 mcast_sqc;
+
+ NEXT_ARG();
+ if (get_u32(&mcast_sqc, *argv, 0))
+ invarg("invalid mcast_startup_query_count",
+ *argv);
+
+ addattr32(n, 1024, IFLA_BR_MCAST_STARTUP_QUERY_CNT,
+ mcast_sqc);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -356,6 +367,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_LAST_MEMBER_CNT])
fprintf(f, "mcast_last_member_count %u ",
rta_getattr_u32(tb[IFLA_BR_MCAST_LAST_MEMBER_CNT]));
+
+ if (tb[IFLA_BR_MCAST_STARTUP_QUERY_CNT])
+ fprintf(f, "mcast_startup_query_count %u ",
+ rta_getattr_u32(tb[IFLA_BR_MCAST_STARTUP_QUERY_CNT]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (13 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL Nikolay Aleksandrov
` (5 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_LAST_MEMBER_INTVL
attribute in iproute2 so it can change the last member interval.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index d10a9255eb56..f2f52e078dbd 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -40,6 +40,7 @@ static void print_explain(FILE *f)
" [ mcast_hash_max HASH_MAX ]\n"
" [ mcast_last_member_count LAST_MEMBER_COUNT ]\n"
" [ mcast_startup_query_count STARTUP_QUERY_COUNT ]\n"
+ " [ mcast_last_member_interval LAST_MEMBER_INTERVAL ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -220,6 +221,16 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr32(n, 1024, IFLA_BR_MCAST_STARTUP_QUERY_CNT,
mcast_sqc);
+ } else if (matches(*argv, "mcast_last_member_interval") == 0) {
+ __u64 mcast_last_member_intvl;
+
+ NEXT_ARG();
+ if (get_u64(&mcast_last_member_intvl, *argv, 0))
+ invarg("invalid mcast_last_member_interval",
+ *argv);
+
+ addattr64(n, 1024, IFLA_BR_MCAST_LAST_MEMBER_INTVL,
+ mcast_last_member_intvl);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -371,6 +382,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_STARTUP_QUERY_CNT])
fprintf(f, "mcast_startup_query_count %u ",
rta_getattr_u32(tb[IFLA_BR_MCAST_STARTUP_QUERY_CNT]));
+
+ if (tb[IFLA_BR_MCAST_LAST_MEMBER_INTVL])
+ fprintf(f, "mcast_last_member_interval %llu ",
+ rta_getattr_u64(tb[IFLA_BR_MCAST_LAST_MEMBER_INTVL]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (14 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL Nikolay Aleksandrov
` (4 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_MEMBERSHIP_INTVL
attribute in iproute2 so it can change the membership interval.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index f2f52e078dbd..9a6c9418ff0f 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -41,6 +41,7 @@ static void print_explain(FILE *f)
" [ mcast_last_member_count LAST_MEMBER_COUNT ]\n"
" [ mcast_startup_query_count STARTUP_QUERY_COUNT ]\n"
" [ mcast_last_member_interval LAST_MEMBER_INTERVAL ]\n"
+ " [ mcast_membership_interval MEMBERSHIP_INTERVAL ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -231,6 +232,17 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
addattr64(n, 1024, IFLA_BR_MCAST_LAST_MEMBER_INTVL,
mcast_last_member_intvl);
+ } else if (matches(*argv, "mcast_membership_interval") == 0) {
+ __u64 mcast_membership_intvl;
+
+ NEXT_ARG();
+ if (get_u64(&mcast_membership_intvl, *argv, 0)) {
+ invarg("invalid mcast_membership_interval",
+ *argv);
+ return -1;
+ }
+ addattr64(n, 1024, IFLA_BR_MCAST_MEMBERSHIP_INTVL,
+ mcast_membership_intvl);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -386,6 +398,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_LAST_MEMBER_INTVL])
fprintf(f, "mcast_last_member_interval %llu ",
rta_getattr_u64(tb[IFLA_BR_MCAST_LAST_MEMBER_INTVL]));
+
+ if (tb[IFLA_BR_MCAST_MEMBERSHIP_INTVL])
+ fprintf(f, "mcast_membership_interval %llu ",
+ rta_getattr_u64(tb[IFLA_BR_MCAST_MEMBERSHIP_INTVL]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (15 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL Nikolay Aleksandrov
` (3 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_QUERIER_INTVL
attribute in iproute2 so it can change the querier interval.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 9a6c9418ff0f..f896f54aa6f8 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -42,6 +42,7 @@ static void print_explain(FILE *f)
" [ mcast_startup_query_count STARTUP_QUERY_COUNT ]\n"
" [ mcast_last_member_interval LAST_MEMBER_INTERVAL ]\n"
" [ mcast_membership_interval MEMBERSHIP_INTERVAL ]\n"
+ " [ mcast_querier_interval QUERIER_INTERVAL ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -243,6 +244,17 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
}
addattr64(n, 1024, IFLA_BR_MCAST_MEMBERSHIP_INTVL,
mcast_membership_intvl);
+ } else if (matches(*argv, "mcast_querier_interval") == 0) {
+ __u64 mcast_querier_intvl;
+
+ NEXT_ARG();
+ if (get_u64(&mcast_querier_intvl, *argv, 0)) {
+ invarg("invalid mcast_querier_interval",
+ *argv);
+ return -1;
+ }
+ addattr64(n, 1024, IFLA_BR_MCAST_QUERIER_INTVL,
+ mcast_querier_intvl);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -402,6 +414,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_MEMBERSHIP_INTVL])
fprintf(f, "mcast_membership_interval %llu ",
rta_getattr_u64(tb[IFLA_BR_MCAST_MEMBERSHIP_INTVL]));
+
+ if (tb[IFLA_BR_MCAST_QUERIER_INTVL])
+ fprintf(f, "mcast_querier_interval %llu ",
+ rta_getattr_u64(tb[IFLA_BR_MCAST_QUERIER_INTVL]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (16 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL Nikolay Aleksandrov
` (2 subsequent siblings)
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_QUERY_INTVL attribute
in iproute2 so it can change the query interval.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index f896f54aa6f8..c5e1fcc6b9a9 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -43,6 +43,7 @@ static void print_explain(FILE *f)
" [ mcast_last_member_interval LAST_MEMBER_INTERVAL ]\n"
" [ mcast_membership_interval MEMBERSHIP_INTERVAL ]\n"
" [ mcast_querier_interval QUERIER_INTERVAL ]\n"
+ " [ mcast_query_interval QUERY_INTERVAL ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -255,6 +256,17 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
}
addattr64(n, 1024, IFLA_BR_MCAST_QUERIER_INTVL,
mcast_querier_intvl);
+ } else if (matches(*argv, "mcast_query_interval") == 0) {
+ __u64 mcast_query_intvl;
+
+ NEXT_ARG();
+ if (get_u64(&mcast_query_intvl, *argv, 0)) {
+ invarg("invalid mcast_query_interval",
+ *argv);
+ return -1;
+ }
+ addattr64(n, 1024, IFLA_BR_MCAST_QUERY_INTVL,
+ mcast_query_intvl);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -418,6 +430,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_QUERIER_INTVL])
fprintf(f, "mcast_querier_interval %llu ",
rta_getattr_u64(tb[IFLA_BR_MCAST_QUERIER_INTVL]));
+
+ if (tb[IFLA_BR_MCAST_QUERY_INTVL])
+ fprintf(f, "mcast_query_interval %llu ",
+ rta_getattr_u64(tb[IFLA_BR_MCAST_QUERY_INTVL]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (17 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 21/21] iplink: bridge: add support for netfilter call attributes Nikolay Aleksandrov
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
attribute in iproute2 so it can change the query response interval.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index c5e1fcc6b9a9..063b87142882 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -44,6 +44,7 @@ static void print_explain(FILE *f)
" [ mcast_membership_interval MEMBERSHIP_INTERVAL ]\n"
" [ mcast_querier_interval QUERIER_INTERVAL ]\n"
" [ mcast_query_interval QUERY_INTERVAL ]\n"
+ " [ mcast_query_response_interval QUERY_RESPONSE_INTERVAL ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -267,6 +268,17 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
}
addattr64(n, 1024, IFLA_BR_MCAST_QUERY_INTVL,
mcast_query_intvl);
+ } else if (!matches(*argv, "mcast_query_response_interval")) {
+ __u64 mcast_query_resp_intvl;
+
+ NEXT_ARG();
+ if (get_u64(&mcast_query_resp_intvl, *argv, 0)) {
+ invarg("invalid mcast_query_response_interval",
+ *argv);
+ return -1;
+ }
+ addattr64(n, 1024, IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
+ mcast_query_resp_intvl);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -434,6 +446,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_QUERY_INTVL])
fprintf(f, "mcast_query_interval %llu ",
rta_getattr_u64(tb[IFLA_BR_MCAST_QUERY_INTVL]));
+
+ if (tb[IFLA_BR_MCAST_QUERY_RESPONSE_INTVL])
+ fprintf(f, "mcast_query_response_interval %llu ",
+ rta_getattr_u64(tb[IFLA_BR_MCAST_QUERY_RESPONSE_INTVL]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (18 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 21/21] iplink: bridge: add support for netfilter call attributes Nikolay Aleksandrov
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_MCAST_STARTUP_QUERY_INTVL
attribute in iproute2 so it can change the startup query interval.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 063b87142882..b531cb131e7c 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -45,6 +45,7 @@ static void print_explain(FILE *f)
" [ mcast_querier_interval QUERIER_INTERVAL ]\n"
" [ mcast_query_interval QUERY_INTERVAL ]\n"
" [ mcast_query_response_interval QUERY_RESPONSE_INTERVAL ]\n"
+ " [ mcast_startup_query_interval STARTUP_QUERY_INTERVAL ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -279,6 +280,17 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
}
addattr64(n, 1024, IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,
mcast_query_resp_intvl);
+ } else if (!matches(*argv, "mcast_startup_query_interval")) {
+ __u64 mcast_startup_query_intvl;
+
+ NEXT_ARG();
+ if (get_u64(&mcast_startup_query_intvl, *argv, 0)) {
+ invarg("invalid mcast_startup_query_interval",
+ *argv);
+ return -1;
+ }
+ addattr64(n, 1024, IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
+ mcast_startup_query_intvl);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -450,6 +462,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_QUERY_RESPONSE_INTVL])
fprintf(f, "mcast_query_response_interval %llu ",
rta_getattr_u64(tb[IFLA_BR_MCAST_QUERY_RESPONSE_INTVL]));
+
+ if (tb[IFLA_BR_MCAST_STARTUP_QUERY_INTVL])
+ fprintf(f, "mcast_startup_query_interval %llu ",
+ rta_getattr_u64(tb[IFLA_BR_MCAST_STARTUP_QUERY_INTVL]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH iproute2 21/21] iplink: bridge: add support for netfilter call attributes
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (19 preceding siblings ...)
2016-02-08 11:55 ` [PATCH iproute2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL Nikolay Aleksandrov
@ 2016-02-08 11:55 ` Nikolay Aleksandrov
20 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 11:55 UTC (permalink / raw)
To: netdev; +Cc: roopa, stephen, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
This patch implements support for the IFLA_BR_NF_CALL_(IP|IP6|ARP)TABLES
attributes in iproute2 so it can change their values.
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
---
ip/iplink_bridge.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index b531cb131e7c..05e27fca021b 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -46,6 +46,9 @@ static void print_explain(FILE *f)
" [ mcast_query_interval QUERY_INTERVAL ]\n"
" [ mcast_query_response_interval QUERY_RESPONSE_INTERVAL ]\n"
" [ mcast_startup_query_interval STARTUP_QUERY_INTERVAL ]\n"
+ " [ nf_call_iptables NF_CALL_IPTABLES ]\n"
+ " [ nf_call_ip6tables NF_CALL_IP6TABLES ]\n"
+ " [ nf_call_arptables NF_CALL_ARPTABLES ]\n"
"\n"
"Where: VLAN_PROTOCOL := { 802.1Q | 802.1ad }\n"
);
@@ -291,6 +294,36 @@ static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
}
addattr64(n, 1024, IFLA_BR_MCAST_STARTUP_QUERY_INTVL,
mcast_startup_query_intvl);
+ } else if (matches(*argv, "nf_call_iptables") == 0) {
+ __u8 nf_call_ipt;
+
+ NEXT_ARG();
+ if (get_u8(&nf_call_ipt, *argv, 0)) {
+ invarg("invalid nf_call_iptables", *argv);
+ return -1;
+ }
+ addattr8(n, 1024, IFLA_BR_NF_CALL_IPTABLES,
+ nf_call_ipt);
+ } else if (matches(*argv, "nf_call_ip6tables") == 0) {
+ __u8 nf_call_ip6t;
+
+ NEXT_ARG();
+ if (get_u8(&nf_call_ip6t, *argv, 0)) {
+ invarg("invalid nf_call_ip6tables", *argv);
+ return -1;
+ }
+ addattr8(n, 1024, IFLA_BR_NF_CALL_IP6TABLES,
+ nf_call_ip6t);
+ } else if (matches(*argv, "nf_call_arptables") == 0) {
+ __u8 nf_call_arpt;
+
+ NEXT_ARG();
+ if (get_u8(&nf_call_arpt, *argv, 0)) {
+ invarg("invalid nf_call_arptables", *argv);
+ return -1;
+ }
+ addattr8(n, 1024, IFLA_BR_NF_CALL_ARPTABLES,
+ nf_call_arpt);
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -466,6 +499,18 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_BR_MCAST_STARTUP_QUERY_INTVL])
fprintf(f, "mcast_startup_query_interval %llu ",
rta_getattr_u64(tb[IFLA_BR_MCAST_STARTUP_QUERY_INTVL]));
+
+ if (tb[IFLA_BR_NF_CALL_IPTABLES])
+ fprintf(f, "nf_call_iptables %u ",
+ rta_getattr_u8(tb[IFLA_BR_NF_CALL_IPTABLES]));
+
+ if (tb[IFLA_BR_NF_CALL_IP6TABLES])
+ fprintf(f, "nf_call_ip6tables %u ",
+ rta_getattr_u8(tb[IFLA_BR_NF_CALL_IP6TABLES]));
+
+ if (tb[IFLA_BR_NF_CALL_ARPTABLES])
+ fprintf(f, "nf_call_arptables %u ",
+ rta_getattr_u8(tb[IFLA_BR_NF_CALL_ARPTABLES]));
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 27+ messages in thread
* Re: [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root
2016-02-08 11:55 ` [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
@ 2016-02-08 22:21 ` Stephen Hemminger
2016-02-08 22:25 ` Nikolay Aleksandrov
0 siblings, 1 reply; 27+ messages in thread
From: Stephen Hemminger @ 2016-02-08 22:21 UTC (permalink / raw)
To: Nikolay Aleksandrov; +Cc: netdev, roopa, Nikolay Aleksandrov
On Mon, 8 Feb 2016 12:55:07 +0100
Nikolay Aleksandrov <razor@blackwall.org> wrote:
>
> +static void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf,
> + size_t len)
> +{
> + const unsigned char *x = (const unsigned char *)id;
> +
> + snprintf(buf, len, "%.2x%.2x.%.2x%.2x%.2x%.2x%.2x%.2x", x[0], x[1],
> + x[2], x[3], x[4], x[5], x[6], x[7]);
> +}
Please don't reinvent ether_ntoa_r
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH iproute2 03/21] iplink: bridge: export read-only timers
2016-02-08 11:55 ` [PATCH iproute2 03/21] iplink: bridge: export read-only timers Nikolay Aleksandrov
@ 2016-02-08 22:23 ` Stephen Hemminger
2016-02-08 22:26 ` Nikolay Aleksandrov
0 siblings, 1 reply; 27+ messages in thread
From: Stephen Hemminger @ 2016-02-08 22:23 UTC (permalink / raw)
To: Nikolay Aleksandrov; +Cc: netdev, roopa, Nikolay Aleksandrov
On Mon, 8 Feb 2016 12:55:09 +0100
Nikolay Aleksandrov <razor@blackwall.org> wrote:
> +
> + if (tb[IFLA_BR_HELLO_TIMER])
> + fprintf(f, "hello_timer %llu ",
> + rta_getattr_u64(tb[IFLA_BR_HELLO_TIMER]));
> +
> + if (tb[IFLA_BR_TCN_TIMER])
> + fprintf(f, "tcn_timer %llu ",
> + rta_getattr_u64(tb[IFLA_BR_TCN_TIMER]));
> +
> + if (tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER])
> + fprintf(f, "topology_change_timer %llu ",
> + rta_getattr_u64(tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER]));
> +
> + if (tb[IFLA_BR_GC_TIMER])
> + fprintf(f, "gc_timer %llu ",
> +
These should be rescaled as seconds.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root
2016-02-08 22:21 ` Stephen Hemminger
@ 2016-02-08 22:25 ` Nikolay Aleksandrov
2016-02-08 22:29 ` Nikolay Aleksandrov
0 siblings, 1 reply; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 22:25 UTC (permalink / raw)
To: Stephen Hemminger, Nikolay Aleksandrov; +Cc: netdev, roopa
On 02/08/2016 11:21 PM, Stephen Hemminger wrote:
> On Mon, 8 Feb 2016 12:55:07 +0100
> Nikolay Aleksandrov <razor@blackwall.org> wrote:
>
>>
>> +static void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf,
>> + size_t len)
>> +{
>> + const unsigned char *x = (const unsigned char *)id;
>> +
>> + snprintf(buf, len, "%.2x%.2x.%.2x%.2x%.2x%.2x%.2x%.2x", x[0], x[1],
>> + x[2], x[3], x[4], x[5], x[6], x[7]);
>> +}
>
> Please don't reinvent ether_ntoa_r
>
This was taken from bridge-utils, it actually includes 2 more bytes, it's
not only an ethernet address.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH iproute2 03/21] iplink: bridge: export read-only timers
2016-02-08 22:23 ` Stephen Hemminger
@ 2016-02-08 22:26 ` Nikolay Aleksandrov
0 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 22:26 UTC (permalink / raw)
To: Stephen Hemminger, Nikolay Aleksandrov; +Cc: netdev, roopa
On 02/08/2016 11:23 PM, Stephen Hemminger wrote:
> On Mon, 8 Feb 2016 12:55:09 +0100
> Nikolay Aleksandrov <razor@blackwall.org> wrote:
>
>> +
>> + if (tb[IFLA_BR_HELLO_TIMER])
>> + fprintf(f, "hello_timer %llu ",
>> + rta_getattr_u64(tb[IFLA_BR_HELLO_TIMER]));
>> +
>> + if (tb[IFLA_BR_TCN_TIMER])
>> + fprintf(f, "tcn_timer %llu ",
>> + rta_getattr_u64(tb[IFLA_BR_TCN_TIMER]));
>> +
>> + if (tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER])
>> + fprintf(f, "topology_change_timer %llu ",
>> + rta_getattr_u64(tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER]));
>> +
>> + if (tb[IFLA_BR_GC_TIMER])
>> + fprintf(f, "gc_timer %llu ",
>> +
>
> These should be rescaled as seconds.
>
Wanted to be consistent with the other exported time values, but okay
I'll convert these to seconds.
Thanks,
Nik
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root
2016-02-08 22:25 ` Nikolay Aleksandrov
@ 2016-02-08 22:29 ` Nikolay Aleksandrov
0 siblings, 0 replies; 27+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 22:29 UTC (permalink / raw)
To: Stephen Hemminger, Nikolay Aleksandrov; +Cc: netdev, roopa
On 02/08/2016 11:25 PM, Nikolay Aleksandrov wrote:
> On 02/08/2016 11:21 PM, Stephen Hemminger wrote:
>> On Mon, 8 Feb 2016 12:55:07 +0100
>> Nikolay Aleksandrov <razor@blackwall.org> wrote:
>>
>>>
>>> +static void br_dump_bridge_id(const struct ifla_bridge_id *id, char *buf,
>>> + size_t len)
>>> +{
>>> + const unsigned char *x = (const unsigned char *)id;
>>> +
>>> + snprintf(buf, len, "%.2x%.2x.%.2x%.2x%.2x%.2x%.2x%.2x", x[0], x[1],
>>> + x[2], x[3], x[4], x[5], x[6], x[7]);
>>> +}
>>
>> Please don't reinvent ether_ntoa_r
>>
> This was taken from bridge-utils, it actually includes 2 more bytes, it's
> not only an ethernet address.
>
Also the output is very different, i.e. bridge_id 8000.000000000000
there're no colons.
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2016-02-08 22:29 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-08 11:55 [PATCH iproute2 00/21] bridge: complete netlink support Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
2016-02-08 22:21 ` Stephen Hemminger
2016-02-08 22:25 ` Nikolay Aleksandrov
2016-02-08 22:29 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 03/21] iplink: bridge: export read-only timers Nikolay Aleksandrov
2016-02-08 22:23 ` Stephen Hemminger
2016-02-08 22:26 ` Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL Nikolay Aleksandrov
2016-02-08 11:55 ` [PATCH iproute2 21/21] iplink: bridge: add support for netfilter call attributes Nikolay Aleksandrov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).