* [Ocfs2-devel] [PATCH 1/5] ocfs2/cluster: add configfs attributes for IPv6 address and port
@ 2018-10-25 10:32 piaojun
0 siblings, 0 replies; only message in thread
From: piaojun @ 2018-10-25 10:32 UTC (permalink / raw)
To: ocfs2-devel
IPv6 address is not compatibile with IPv4, so add configfs attributes for
IPv6 configure.
Signed-off-by: Jun Piao <piaojun@huawei.com>
---
fs/ocfs2/cluster/nodemanager.c | 45 ++++++++++++++++++++++++++++++++++--------
fs/ocfs2/cluster/nodemanager.h | 3 +++
2 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/fs/ocfs2/cluster/nodemanager.c b/fs/ocfs2/cluster/nodemanager.c
index da64c3a..a3c4e61 100644
--- a/fs/ocfs2/cluster/nodemanager.c
+++ b/fs/ocfs2/cluster/nodemanager.c
@@ -192,8 +192,10 @@ static struct o2nm_cluster *to_o2nm_cluster_from_node(struct o2nm_node *node)
enum {
O2NM_NODE_ATTR_NUM = 0,
- O2NM_NODE_ATTR_PORT,
- O2NM_NODE_ATTR_ADDRESS,
+ O2NM_NODE_ATTR_IPV4_PORT,
+ O2NM_NODE_ATTR_IPV6_PORT,
+ O2NM_NODE_ATTR_IPV4_ADDRESS,
+ O2NM_NODE_ATTR_IPV6_ADDRESS,
};
static ssize_t o2nm_node_num_store(struct config_item *item, const char *page,
@@ -216,8 +218,8 @@ static ssize_t o2nm_node_num_store(struct config_item *item, const char *page,
* node number and try to use our address and port attributes
* to connect to this node.. make sure that they've been set
* before writing the node attribute? */
- if (!test_bit(O2NM_NODE_ATTR_ADDRESS, &node->nd_set_attributes) ||
- !test_bit(O2NM_NODE_ATTR_PORT, &node->nd_set_attributes))
+ if (!test_bit(O2NM_NODE_ATTR_IPV4_ADDRESS, &node->nd_set_attributes) ||
+ !test_bit(O2NM_NODE_ATTR_IPV4_PORT, &node->nd_set_attributes))
return -EINVAL; /* XXX */
o2nm_lock_subsystem();
@@ -267,7 +269,7 @@ static ssize_t o2nm_node_ipv4_port_store(struct config_item *item,
if (tmp >= (u16)-1)
return -ERANGE;
- if (test_and_set_bit(O2NM_NODE_ATTR_PORT, &node->nd_set_attributes))
+ if (test_and_set_bit(O2NM_NODE_ATTR_IPV4_PORT, &node->nd_set_attributes))
return -EBUSY;
node->nd_ipv4_port = htons(tmp);
@@ -312,7 +314,7 @@ static ssize_t o2nm_node_ipv4_address_store(struct config_item *item,
write_lock(&cluster->cl_nodes_lock);
if (o2nm_node_ip_tree_lookup(cluster, ipv4_addr, &p, &parent))
ret = -EEXIST;
- else if (test_and_set_bit(O2NM_NODE_ATTR_ADDRESS,
+ else if (test_and_set_bit(O2NM_NODE_ATTR_IPV4_ADDRESS,
&node->nd_set_attributes))
ret = -EBUSY;
else {
@@ -330,6 +332,29 @@ static ssize_t o2nm_node_ipv4_address_store(struct config_item *item,
return count;
}
+static ssize_t o2nm_node_ipv6_port_show(struct config_item *item, char *page)
+{
+ return 0;
+}
+
+static ssize_t o2nm_node_ipv6_port_store(struct config_item *item,
+ const char *page, size_t count)
+{
+ return 0;
+}
+
+static ssize_t o2nm_node_ipv6_address_show(struct config_item *item, char *page)
+{
+ return 0;
+}
+
+static ssize_t o2nm_node_ipv6_address_store(struct config_item *item,
+ const char *page,
+ size_t count)
+{
+ return 0;
+}
+
static ssize_t o2nm_node_local_show(struct config_item *item, char *page)
{
return sprintf(page, "%d\n", to_o2nm_node(item)->nd_local);
@@ -352,9 +377,9 @@ static ssize_t o2nm_node_local_store(struct config_item *item, const char *page,
/* setting local turns on networking rx for now so we require having
* set everything else first */
- if (!test_bit(O2NM_NODE_ATTR_ADDRESS, &node->nd_set_attributes) ||
+ if (!test_bit(O2NM_NODE_ATTR_IPV4_ADDRESS, &node->nd_set_attributes) ||
!test_bit(O2NM_NODE_ATTR_NUM, &node->nd_set_attributes) ||
- !test_bit(O2NM_NODE_ATTR_PORT, &node->nd_set_attributes))
+ !test_bit(O2NM_NODE_ATTR_IPV4_PORT, &node->nd_set_attributes))
return -EINVAL; /* XXX */
o2nm_lock_subsystem();
@@ -400,13 +425,17 @@ static ssize_t o2nm_node_local_store(struct config_item *item, const char *page,
CONFIGFS_ATTR(o2nm_node_, num);
CONFIGFS_ATTR(o2nm_node_, ipv4_port);
+CONFIGFS_ATTR(o2nm_node_, ipv6_port);
CONFIGFS_ATTR(o2nm_node_, ipv4_address);
+CONFIGFS_ATTR(o2nm_node_, ipv6_address);
CONFIGFS_ATTR(o2nm_node_, local);
static struct configfs_attribute *o2nm_node_attrs[] = {
&o2nm_node_attr_num,
&o2nm_node_attr_ipv4_port,
+ &o2nm_node_attr_ipv6_port,
&o2nm_node_attr_ipv4_address,
+ &o2nm_node_attr_ipv6_address,
&o2nm_node_attr_local,
NULL,
};
diff --git a/fs/ocfs2/cluster/nodemanager.h b/fs/ocfs2/cluster/nodemanager.h
index 09ea2d3..55fdb81 100644
--- a/fs/ocfs2/cluster/nodemanager.h
+++ b/fs/ocfs2/cluster/nodemanager.h
@@ -45,8 +45,11 @@ struct o2nm_node {
char nd_name[O2NM_MAX_NAME_LEN+1]; /* replace? */
__u8 nd_num;
/* only one address per node, as attributes, for now. */
+ unsigned nd_ipnet_type:1; /* 0-ipv4, 1-ipv6 */
__be32 nd_ipv4_address;
+ __u8 nd_ipv6_address[16];
__be16 nd_ipv4_port;
+ __be16 nd_ipv6_port;
struct rb_node nd_ip_node;
/* there can be only one local node for now */
int nd_local;
--
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2018-10-25 10:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-25 10:32 [Ocfs2-devel] [PATCH 1/5] ocfs2/cluster: add configfs attributes for IPv6 address and port piaojun
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.