netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ahmed Amamou <ahmed@gandi.net>
To: netdev@vger.kernel.org
Cc: William Dauchy <william@gandi.net>, Ahmed Amamou <ahmed@gandi.net>
Subject: [PATCH RFC v2 08/21] net: rbridge: get Rbridge nickname from daemon
Date: Tue,  1 Sep 2015 17:43:03 +0200	[thread overview]
Message-ID: <1441122196-11662-9-git-send-email-ahmed@gandi.net> (raw)
In-Reply-To: <1441122196-11662-1-git-send-email-ahmed@gandi.net>

Signed-off-by: Ahmed Amamou <ahmed@gandi.net>
---
 include/uapi/linux/if_link.h |  6 ++++++
 net/bridge/Makefile          |  2 +-
 net/bridge/br_netlink.c      | 10 +++++++++-
 net/bridge/br_private.h      |  6 ++++++
 net/bridge/rbr_rtnetlink.c   | 44 ++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 66 insertions(+), 2 deletions(-)
 create mode 100644 net/bridge/rbr_rtnetlink.c

diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index 2c7e8e3..07a3f01 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -229,6 +229,12 @@ enum {
 	IFLA_BR_AGEING_TIME,
 	IFLA_BR_STP_STATE,
 	IFLA_BR_PRIORITY,
+#ifdef CONFIG_TRILL
+/* TRILL section */
+	IFLA_TRILL_NICKNAME,
+	IFLA_TRILL_ROOT,
+	IFLA_TRILL_INFO,
+#endif
 	__IFLA_BR_MAX,
 };
 
diff --git a/net/bridge/Makefile b/net/bridge/Makefile
index 27da487..472dc24 100644
--- a/net/bridge/Makefile
+++ b/net/bridge/Makefile
@@ -22,4 +22,4 @@ bridge-$(CONFIG_BRIDGE_VLAN_FILTERING) += br_vlan.o
 
 obj-$(CONFIG_NETFILTER) += netfilter/
 
-bridge-$(CONFIG_TRILL) += rbr.o
+bridge-$(CONFIG_TRILL) += rbr.o rbr_rtnetlink.o
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
index 4d74a06..def0ea3 100644
--- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c
@@ -730,6 +730,11 @@ static const struct nla_policy br_policy[IFLA_BR_MAX + 1] = {
 	[IFLA_BR_AGEING_TIME] = { .type = NLA_U32 },
 	[IFLA_BR_STP_STATE] = { .type = NLA_U32 },
 	[IFLA_BR_PRIORITY] = { .type = NLA_U16 },
+#ifdef CONFIG_TRILL
+	[IFLA_TRILL_NICKNAME]   = { .type = NLA_U16 },
+	[IFLA_TRILL_ROOT]       = { .type = NLA_U16 },
+	[IFLA_TRILL_INFO]       = { .type = NLA_BINARY },
+#endif
 };
 
 static int br_changelink(struct net_device *brdev, struct nlattr *tb[],
@@ -776,8 +781,11 @@ static int br_changelink(struct net_device *brdev, struct nlattr *tb[],
 
 		br_stp_set_bridge_priority(br, priority);
 	}
+#ifdef CONFIG_TRILL
+	err = rbr_set_data(brdev, tb, data);
+#endif
 
-	return 0;
+	return err;
 }
 
 static size_t br_get_size(const struct net_device *brdev)
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 67da2ae..ceaf5a9 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -864,6 +864,12 @@ int br_dellink(struct net_device *dev, struct nlmsghdr *nlmsg, u16 flags);
 int br_getlink(struct sk_buff *skb, u32 pid, u32 seq, struct net_device *dev,
 	       u32 filter_mask, int nlflags);
 
+#ifdef CONFIG_TRILL
+/* rbr_netlink.c */
+int rbr_set_data(struct net_device *dev, struct nlattr *tb[],
+		 struct nlattr *data[]);
+#endif
+
 #ifdef CONFIG_SYSFS
 /* br_sysfs_if.c */
 extern const struct sysfs_ops brport_sysfs_ops;
diff --git a/net/bridge/rbr_rtnetlink.c b/net/bridge/rbr_rtnetlink.c
new file mode 100644
index 0000000..d75d45c
--- /dev/null
+++ b/net/bridge/rbr_rtnetlink.c
@@ -0,0 +1,44 @@
+/*
+ *	Generic parts
+ *	Linux ethernet Rbridge
+ *
+ *	Authors:
+ *	Ahmed AMAMOU	<ahmed@gandi.net>
+ *	William Dauchy	<william@gandi.net>
+ *
+ *	This program is free software; you can redistribute it and/or
+ *	modify it under the terms of the GNU General Public License
+ *	as published by the Free Software Foundation; either version
+ *	2 of the License, or (at your option) any later version.
+ */
+
+#include <net/rtnetlink.h>
+#include "br_private.h"
+#include "rbr_private.h"
+
+int rbr_set_data(struct net_device *dev, struct nlattr *tb[],
+		 struct nlattr *data[])
+{
+	struct net_bridge *br = netdev_priv(dev);
+	u16 nick;
+	int err = -ENOMEM;
+
+	if (!br)
+		return -EINVAL;
+
+	if (data[IFLA_TRILL_NICKNAME]) {
+		nick =  nla_get_u16(data[IFLA_TRILL_NICKNAME]);
+		if (br->trill_enabled == BR_NO_TRILL)
+			br_trill_set_enabled(br, 1);
+
+		spin_lock_bh(&br->lock);
+		if (VALID_NICK(nick))
+			br->rbr->nick = htons(nick);
+		spin_unlock_bh(&br->lock);
+	}
+
+	return 0;
+fail:
+	pr_warn("rbr_set_data FAILED\n");
+	return err;
+}
-- 
2.1.4

  parent reply	other threads:[~2015-09-01 15:53 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-01 15:42 [PATCH RFC v2 00/21] TRILL implementation Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 01/21] net: rbridge: add trill frame description Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 02/21] net: rbridge: add layer 2 IS-IS Ethertype Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 03/21] net: rbridge: add RBridge structure Ahmed Amamou
2015-09-01 15:42 ` [PATCH RFC v2 04/21] net: rbridge: add CONFIG_TRILL Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 05/21] net: rbridge: adapt Bridge structure Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 06/21] net: rbridge: enable/disable TRILL capability Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 07/21] net: rbridge: add sysfs for trill_state Ahmed Amamou
2015-09-01 15:43 ` Ahmed Amamou [this message]
2015-09-01 15:43 ` [PATCH RFC v2 09/21] net: rbridge: add elected dtroot Ahmed Amamou
2015-09-01 18:18   ` Sergei Shtylyov
2015-09-01 18:26     ` ahmed amamou
2015-09-01 15:43 ` [PATCH RFC v2 10/21] net: rbridge: add rbr_node management function Ahmed Amamou
2015-09-01 18:30   ` Sergei Shtylyov
2015-09-01 15:43 ` [PATCH RFC v2 11/21] net: rbridge: clean up rbr_node on rbridge stop Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 12/21] net: rbridge: update node table Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 13/21] net: rbridge: add basic trill frame handling function Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 14/21] net: rbridge: update forwarding database Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 15/21] net: rbridge: add test on trill flag before flood Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 16/21] net: rbridge: add encapsulation process Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 17/21] net: rbridge: add receive function Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 18/21] net: rbridge: add rbr_fwd Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 19/21] net: rbridge: add rbr_multidest_fwd Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 20/21] net: rbridge: replace net_port rx_handler Ahmed Amamou
2015-09-01 15:43 ` [PATCH RFC v2 21/21] net: handle packet split for trill Ahmed Amamou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1441122196-11662-9-git-send-email-ahmed@gandi.net \
    --to=ahmed@gandi.net \
    --cc=netdev@vger.kernel.org \
    --cc=william@gandi.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).