In this commit, we add support to fetch the configured cluster monitoring threshold.
Unified · Split
| @@ -57,6 +57,7 @@ enum { · 56 unmodified lines | ||
| 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 |
| @@ -661,3 +661,10 @@ int tipc_nl_monitor_set_threshold(struct net *net, u32 cluster_size) · 660 unmodified lines | ||
| 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 | +} | |
| @@ -70,5 +70,7 @@ void tipc_mon_get_state(struct net *net, u32 addr, · 69 unmodified lines | ||
| 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 |
| @@ -226,6 +226,11 @@ static const struct genl_ops tipc_genl_v2_ops[] = { · 225 unmodified lines | ||
| 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) |
| @@ -1955,3 +1955,55 @@ int tipc_nl_node_set_monitor(struct sk_buff *skb, struct genl_info *info) · 1954 unmodified lines | ||
| 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 | +} | |
| @@ -79,4 +79,5 @@ int tipc_nl_node_get_link(struct sk_buff *skb, struct genl_info *info); · 78 unmodified lines | ||
| 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 |