* [PATCH iproute2 v2 01/21] iplink: bridge: export bridge_id and designated_root
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-09 17:25 ` Stephen Hemminger
2016-02-08 23:14 ` [PATCH iproute2 v2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected Nikolay Aleksandrov
` (19 subsequent siblings)
20 siblings, 1 reply; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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>
---
v2: use ether_ntoa_r in bridge_id dump
ip/iplink_bridge.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/ip/iplink_bridge.c b/ip/iplink_bridge.c
index 00804093dcb5..3bbbcaa120cf 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -13,6 +13,7 @@
#include <stdlib.h>
#include <string.h>
#include <linux/if_link.h>
+#include <netinet/ether.h>
#include "rt_names.h"
#include "utils.h"
@@ -39,6 +40,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)
+{
+ char eaddr[32];
+
+ ether_ntoa_r((const struct ether_addr *)id->addr, eaddr);
+ snprintf(buf, len, "%.2x%.2x.%s", id->prio[0], id->prio[1], eaddr);
+}
+
static int bridge_parse_opt(struct link_util *lu, int argc, char **argv,
struct nlmsghdr *n)
{
@@ -155,6 +165,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] 24+ messages in thread
* [PATCH iproute2 v2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 03/21] iplink: bridge: export read-only timers Nikolay Aleksandrov
` (18 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 3bbbcaa120cf..33ffa6c27f03 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -181,6 +181,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] 24+ messages in thread
* [PATCH iproute2 v2 03/21] iplink: bridge: export read-only timers
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 01/21] iplink: bridge: export bridge_id and designated_root Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 02/21] iplink: bridge: export root_(port|path_cost), topology_change and change_detected Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK Nikolay Aleksandrov
` (17 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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>
---
v2: export timers in seconds.milliseconds format as per Stephen's comment
include/utils.h | 18 ++++++++++++++++++
ip/iplink_bridge.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/include/utils.h b/include/utils.h
index 7310f4e0e5db..c43427c35a6c 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -175,6 +175,24 @@ static inline __u32 nl_mgrp(__u32 group)
return group ? (1 << (group - 1)) : 0;
}
+/* courtesy of bridge-utils */
+static inline unsigned long __tv_to_jiffies(const struct timeval *tv)
+{
+ unsigned long long jif;
+
+ jif = 1000000ULL * tv->tv_sec + tv->tv_usec;
+
+ return jif/10000;
+}
+
+static inline void __jiffies_to_tv(struct timeval *tv, unsigned long jiffies)
+{
+ unsigned long long tvusec;
+
+ tvusec = 10000ULL*jiffies;
+ tv->tv_sec = tvusec/1000000;
+ tv->tv_usec = tvusec - 1000000 * tv->tv_sec;
+}
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 33ffa6c27f03..cd1655751417 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -197,6 +197,40 @@ 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]) {
+ struct timeval tv;
+
+ __jiffies_to_tv(&tv, rta_getattr_u64(tb[IFLA_BR_HELLO_TIMER]));
+ fprintf(f, "hello_timer %4i.%.2i ", (int)tv.tv_sec,
+ (int)tv.tv_usec/10000);
+ }
+
+ if (tb[IFLA_BR_TCN_TIMER]) {
+ struct timeval tv;
+
+ __jiffies_to_tv(&tv, rta_getattr_u64(tb[IFLA_BR_TCN_TIMER]));
+ fprintf(f, "tcn_timer %4i.%.2i ", (int)tv.tv_sec,
+ (int)tv.tv_usec/10000);
+ }
+
+ if (tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER]) {
+ unsigned long jiffies;
+ struct timeval tv;
+
+ jiffies = rta_getattr_u64(tb[IFLA_BR_TOPOLOGY_CHANGE_TIMER]);
+ __jiffies_to_tv(&tv, jiffies);
+ fprintf(f, "topology_change_timer %4i.%.2i ", (int)tv.tv_sec,
+ (int)tv.tv_usec/10000);
+ }
+
+ if (tb[IFLA_BR_GC_TIMER]) {
+ struct timeval tv;
+
+ __jiffies_to_tv(&tv, rta_getattr_u64(tb[IFLA_BR_GC_TIMER]));
+ fprintf(f, "gc_timer %4i.%.2i ", (int)tv.tv_sec,
+ (int)tv.tv_usec/10000);
+ }
}
static void bridge_print_help(struct link_util *lu, int argc, char **argv,
--
2.4.3
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH iproute2 v2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (2 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 03/21] iplink: bridge: export read-only timers Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR Nikolay Aleksandrov
` (16 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 cd1655751417..2ee4bd690a28 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -28,6 +28,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"
@@ -111,6 +112,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;
@@ -231,6 +240,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
fprintf(f, "gc_timer %4i.%.2i ", (int)tv.tv_sec,
(int)tv.tv_usec/10000);
}
+
+ 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] 24+ messages in thread
* [PATCH iproute2 v2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (3 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 04/21] iplink: bridge: add support for IFLA_BR_GROUP_FWD_MASK Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID Nikolay Aleksandrov
` (15 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 2ee4bd690a28..0a2845027acb 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -29,6 +29,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"
@@ -120,6 +121,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;
@@ -244,6 +254,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] 24+ messages in thread
* [PATCH iproute2 v2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (4 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 05/21] iplink: bridge: add support for IFLA_BR_GROUP_ADDR Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER Nikolay Aleksandrov
` (14 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 0a2845027acb..9a8924c2ee82 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -32,6 +32,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"
);
@@ -130,6 +131,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;
@@ -251,6 +261,10 @@ static void bridge_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
(int)tv.tv_usec/10000);
}
+ 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] 24+ messages in thread
* [PATCH iproute2 v2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (5 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 06/21] iplink: bridge: add support for IFLA_BR_VLAN_DEFAULT_PVID Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING Nikolay Aleksandrov
` (13 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 9a8924c2ee82..7a945ed2ae63 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -33,6 +33,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"
);
@@ -140,6 +141,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;
@@ -277,6 +286,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] 24+ messages in thread
* [PATCH iproute2 v2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (6 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 07/21] iplink: bridge: add support for IFLA_BR_MCAST_ROUTER Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR Nikolay Aleksandrov
` (12 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 7a945ed2ae63..fef867bfbd7e 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -33,6 +33,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"
@@ -149,6 +150,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;
@@ -287,6 +296,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] 24+ messages in thread
* [PATCH iproute2 v2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (7 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 08/21] iplink: bridge: add support for IFLA_BR_MCAST_SNOOPING Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER Nikolay Aleksandrov
` (11 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 fef867bfbd7e..b802ef15eb1d 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -35,6 +35,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"
);
@@ -158,6 +159,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;
@@ -303,6 +314,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] 24+ messages in thread
* [PATCH iproute2 v2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (8 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 09/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_USE_IFADDR Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY Nikolay Aleksandrov
` (10 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 b802ef15eb1d..fbea0a38fd41 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -36,6 +36,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"
);
@@ -169,6 +170,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;
@@ -318,6 +327,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] 24+ messages in thread
* [PATCH iproute2 v2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (9 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 10/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX Nikolay Aleksandrov
` (9 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 fbea0a38fd41..93dcc982c623 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -37,6 +37,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"
);
@@ -178,6 +179,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;
@@ -331,6 +342,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] 24+ messages in thread
* [PATCH iproute2 v2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (10 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 11/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_ELASTICITY Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT Nikolay Aleksandrov
` (8 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 93dcc982c623..f912c318c24a 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -38,6 +38,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"
);
@@ -189,6 +190,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;
@@ -346,6 +356,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] 24+ messages in thread
* [PATCH iproute2 v2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (11 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 12/21] iplink: bridge: add support for IFLA_BR_MCAST_HASH_MAX Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT Nikolay Aleksandrov
` (7 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 f912c318c24a..be83a5690d39 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -39,6 +39,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"
);
@@ -199,6 +200,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;
@@ -360,6 +371,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] 24+ messages in thread
* [PATCH iproute2 v2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (12 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 13/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_CNT Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL Nikolay Aleksandrov
` (6 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 be83a5690d39..58c19a1f0920 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -40,6 +40,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"
);
@@ -210,6 +211,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;
@@ -375,6 +386,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] 24+ messages in thread
* [PATCH iproute2 v2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (13 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 14/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_CNT Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL Nikolay Aleksandrov
` (5 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 58c19a1f0920..9522c3f1918e 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -41,6 +41,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"
);
@@ -221,6 +222,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;
@@ -390,6 +401,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] 24+ messages in thread
* [PATCH iproute2 v2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (14 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 15/21] iplink: bridge: add support for IFLA_BR_MCAST_LAST_MEMBER_INTVL Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL Nikolay Aleksandrov
` (4 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 9522c3f1918e..fbac442f4402 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -42,6 +42,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"
);
@@ -232,6 +233,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;
@@ -405,6 +417,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] 24+ messages in thread
* [PATCH iproute2 v2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (15 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 16/21] iplink: bridge: add support for IFLA_BR_MCAST_MEMBERSHIP_INTVL Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL Nikolay Aleksandrov
` (3 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 fbac442f4402..1138e6ee7599 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -43,6 +43,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"
);
@@ -244,6 +245,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;
@@ -421,6 +433,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] 24+ messages in thread
* [PATCH iproute2 v2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (16 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 17/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERIER_INTVL Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL Nikolay Aleksandrov
` (2 subsequent siblings)
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 1138e6ee7599..16fc0d31c90f 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -44,6 +44,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"
);
@@ -256,6 +257,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;
@@ -437,6 +449,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] 24+ messages in thread
* [PATCH iproute2 v2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (17 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 18/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_INTVL Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 21/21] iplink: bridge: add support for netfilter call attributes Nikolay Aleksandrov
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 16fc0d31c90f..92060eeae1cc 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -45,6 +45,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"
);
@@ -268,6 +269,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;
@@ -453,6 +465,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] 24+ messages in thread
* [PATCH iproute2 v2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (18 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 19/21] iplink: bridge: add support for IFLA_BR_MCAST_QUERY_RESPONSE_INTVL Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-08 23:14 ` [PATCH iproute2 v2 21/21] iplink: bridge: add support for netfilter call attributes Nikolay Aleksandrov
20 siblings, 0 replies; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 92060eeae1cc..a55a36adacdf 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -46,6 +46,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"
);
@@ -280,6 +281,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;
@@ -469,6 +481,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] 24+ messages in thread
* [PATCH iproute2 v2 21/21] iplink: bridge: add support for netfilter call attributes
2016-02-08 23:14 [PATCH iproute2 v2 00/21] bridge: complete netlink support Nikolay Aleksandrov
` (19 preceding siblings ...)
2016-02-08 23:14 ` [PATCH iproute2 v2 20/21] iplink: bridge: add support for IFLA_BR_MCAST_STARTUP_QUERY_INTVL Nikolay Aleksandrov
@ 2016-02-08 23:14 ` Nikolay Aleksandrov
2016-02-09 12:00 ` Pablo Neira Ayuso
20 siblings, 1 reply; 24+ messages in thread
From: Nikolay Aleksandrov @ 2016-02-08 23:14 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 a55a36adacdf..1b666f0adef4 100644
--- a/ip/iplink_bridge.c
+++ b/ip/iplink_bridge.c
@@ -47,6 +47,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"
);
@@ -292,6 +295,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;
@@ -485,6 +518,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] 24+ messages in thread
* Re: [PATCH iproute2 v2 21/21] iplink: bridge: add support for netfilter call attributes
2016-02-08 23:14 ` [PATCH iproute2 v2 21/21] iplink: bridge: add support for netfilter call attributes Nikolay Aleksandrov
@ 2016-02-09 12:00 ` Pablo Neira Ayuso
0 siblings, 0 replies; 24+ messages in thread
From: Pablo Neira Ayuso @ 2016-02-09 12:00 UTC (permalink / raw)
To: Nikolay Aleksandrov
Cc: netdev, roopa, stephen, Nikolay Aleksandrov, netfilter-devel, fw
Hi Nikolay,
On Tue, Feb 09, 2016 at 12:14:39AM +0100, Nikolay Aleksandrov wrote:
> 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 a55a36adacdf..1b666f0adef4 100644
> --- a/ip/iplink_bridge.c
> +++ b/ip/iplink_bridge.c
> @@ -47,6 +47,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"
We will soon have conntrack support for bridge, that will help us kill
this bridge_netfilter glue code that has caused us many headaches.
So I'd prefer not to give more exposition to this.
^ permalink raw reply [flat|nested] 24+ messages in thread