Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tipc: get monitor threshold for the cluster

In this commit, we add support to fetch the configured
cluster monitoring threshold.

Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Parthasarathy Bhuvaragan and committed by
David S. Miller
bf1035b2 7b3f5229

+68
+1
include/uapi/linux/tipc_netlink.h
··· 57 57 TIPC_NL_NET_SET, 58 58 TIPC_NL_NAME_TABLE_GET, 59 59 TIPC_NL_MON_SET, 60 + TIPC_NL_MON_GET, 60 61 61 62 __TIPC_NL_CMD_MAX, 62 63 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
+7
net/tipc/monitor.c
··· 661 661 662 662 return 0; 663 663 } 664 + 665 + int tipc_nl_monitor_get_threshold(struct net *net) 666 + { 667 + struct tipc_net *tn = tipc_net(net); 668 + 669 + return tn->mon_threshold; 670 + }
+2
net/tipc/monitor.h
··· 70 70 void tipc_mon_remove_peer(struct net *net, u32 addr, int bearer_id); 71 71 72 72 int tipc_nl_monitor_set_threshold(struct net *net, u32 cluster_size); 73 + int tipc_nl_monitor_get_threshold(struct net *net); 74 + 73 75 extern const int tipc_max_domain_size; 74 76 #endif
+5
net/tipc/netlink.c
··· 226 226 .doit = tipc_nl_node_set_monitor, 227 227 .policy = tipc_nl_policy, 228 228 }, 229 + { 230 + .cmd = TIPC_NL_MON_GET, 231 + .doit = tipc_nl_node_get_monitor, 232 + .policy = tipc_nl_policy, 233 + }, 229 234 }; 230 235 231 236 int tipc_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr ***attr)
+52
net/tipc/node.c
··· 1955 1955 1956 1956 return 0; 1957 1957 } 1958 + 1959 + static int __tipc_nl_add_monitor_prop(struct net *net, struct tipc_nl_msg *msg) 1960 + { 1961 + struct nlattr *attrs; 1962 + void *hdr; 1963 + u32 val; 1964 + 1965 + hdr = genlmsg_put(msg->skb, msg->portid, msg->seq, &tipc_genl_family, 1966 + 0, TIPC_NL_MON_GET); 1967 + if (!hdr) 1968 + return -EMSGSIZE; 1969 + 1970 + attrs = nla_nest_start(msg->skb, TIPC_NLA_MON); 1971 + if (!attrs) 1972 + goto msg_full; 1973 + 1974 + val = tipc_nl_monitor_get_threshold(net); 1975 + 1976 + if (nla_put_u32(msg->skb, TIPC_NLA_MON_ACTIVATION_THRESHOLD, val)) 1977 + goto attr_msg_full; 1978 + 1979 + nla_nest_end(msg->skb, attrs); 1980 + genlmsg_end(msg->skb, hdr); 1981 + 1982 + return 0; 1983 + 1984 + attr_msg_full: 1985 + nla_nest_cancel(msg->skb, attrs); 1986 + msg_full: 1987 + genlmsg_cancel(msg->skb, hdr); 1988 + 1989 + return -EMSGSIZE; 1990 + } 1991 + 1992 + int tipc_nl_node_get_monitor(struct sk_buff *skb, struct genl_info *info) 1993 + { 1994 + struct net *net = sock_net(skb->sk); 1995 + struct tipc_nl_msg msg; 1996 + int err; 1997 + 1998 + msg.skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 1999 + msg.portid = info->snd_portid; 2000 + msg.seq = info->snd_seq; 2001 + 2002 + err = __tipc_nl_add_monitor_prop(net, &msg); 2003 + if (err) { 2004 + nlmsg_free(msg.skb); 2005 + return err; 2006 + } 2007 + 2008 + return genlmsg_reply(msg.skb, info); 2009 + }
+1
net/tipc/node.h
··· 79 79 int tipc_nl_node_set_link(struct sk_buff *skb, struct genl_info *info); 80 80 81 81 int tipc_nl_node_set_monitor(struct sk_buff *skb, struct genl_info *info); 82 + int tipc_nl_node_get_monitor(struct sk_buff *skb, struct genl_info *info); 82 83 #endif