> -----Original Message-----
> From: Parthasarathy Bhuvaragan
> Sent: Thursday, 02 June, 2016 10:10
> To: tipc-discussion@lists.sourceforge.net; Jon Maloy; ma...@donjonn.com; Ying
> Xue; Richard Alpe
> Subject: [PATCH iproute2 v3 07/10] tipc: add link monitor summary
> 
> The monitor summary command prints the basic attributes
> specific to the local node.
> A sample usage is shown below:
> $ tipc link monitor summary
> 
> bearer eth:data0
>     table 8

I suspect you mean "table generation" here? Then you should spell it out. If it 
for some reason has to be one single word, call the entry "generation", as just 
"table" gives no useful information at all.

>     members 8

"local domain members" ?

///jon

>     state active
> 
> bearer eth:data1
>     table 8
>     members 8
>     state active
> 
> $ tipc link monitor summary -h
> Usage: tipc monitor summary
> 
> Signed-off-by: Parthasarathy Bhuvaragan
> <parthasarathy.bhuvara...@ericsson.com>
> ---
>  include/linux/tipc_netlink.h | 25 ++++++++++++++++++++++++
>  tipc/link.c                  | 45 
> +++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 69 insertions(+), 1 deletion(-)
> 
> diff --git a/include/linux/tipc_netlink.h b/include/linux/tipc_netlink.h
> index d07c6ec76062..5f3f6d09fb79 100644
> --- a/include/linux/tipc_netlink.h
> +++ b/include/linux/tipc_netlink.h
> @@ -58,6 +58,7 @@ enum {
>       TIPC_NL_NAME_TABLE_GET,
>       TIPC_NL_MON_SET,
>       TIPC_NL_MON_GET,
> +     TIPC_NL_MON_PEER_GET,
> 
>       __TIPC_NL_CMD_MAX,
>       TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
> @@ -75,6 +76,7 @@ enum {
>       TIPC_NLA_NET,                   /* nest */
>       TIPC_NLA_NAME_TABLE,            /* nest */
>       TIPC_NLA_MON,                   /* nest */
> +     TIPC_NLA_MON_PEER,              /* nest */
> 
>       __TIPC_NLA_MAX,
>       TIPC_NLA_MAX = __TIPC_NLA_MAX - 1
> @@ -173,6 +175,11 @@ enum {
>  enum {
>       TIPC_NLA_MON_UNSPEC,
>       TIPC_NLA_MON_ACTIVATION_THRESHOLD,      /* u32 */
> +     TIPC_NLA_MON_REF,                       /* u32 */
> +     TIPC_NLA_MON_ACTIVE,                    /* flag */
> +     TIPC_NLA_MON_BEARER_NAME,               /* string */
> +     TIPC_NLA_MON_PEERCNT,                   /* u32 */
> +     TIPC_NLA_MON_LISTGEN,                   /* u32 */
> 
>       __TIPC_NLA_MON_MAX,
>       TIPC_NLA_MON_MAX = __TIPC_NLA_MON_MAX - 1
> @@ -194,6 +201,24 @@ enum {
>       TIPC_NLA_PUBL_MAX = __TIPC_NLA_PUBL_MAX - 1
>  };
> 
> +/* Monitor peer info */
> +enum {
> +     TIPC_NLA_MON_PEER_UNSPEC,
> +
> +     TIPC_NLA_MON_PEER_ADDR,                 /* u32 */
> +     TIPC_NLA_MON_PEER_DOMGEN,               /* u32 */
> +     TIPC_NLA_MON_PEER_APPLIED,              /* u32 */
> +     TIPC_NLA_MON_PEER_UPMAP,                /* u64 */
> +     TIPC_NLA_MON_PEER_MEMBERS,              /* tlv */
> +     TIPC_NLA_MON_PEER_UP,                   /* flag */
> +     TIPC_NLA_MON_PEER_HEAD,                 /* flag */
> +     TIPC_NLA_MON_PEER_LOCAL,                /* flag */
> +     TIPC_NLA_MON_PEER_PAD,                  /* flag */
> +
> +     __TIPC_NLA_MON_PEER_MAX,
> +     TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1
> +};
> +
>  /* Nest, connection info */
>  enum {
>       TIPC_NLA_CON_UNSPEC,
> diff --git a/tipc/link.c b/tipc/link.c
> index a09444912515..46a25b314311 100644
> --- a/tipc/link.c
> +++ b/tipc/link.c
> @@ -515,6 +515,47 @@ static int cmd_link_mon_set_prop(struct nlmsghdr *nlh,
> const struct cmd *cmd,
>       return msg_doit(nlh, NULL, NULL);
>  }
> 
> +static int link_mon_summary_cb(const struct nlmsghdr *nlh, void *data)
> +{
> +     struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh);
> +     struct nlattr *info[TIPC_NLA_MAX + 1] = {};
> +     struct nlattr *attrs[TIPC_NLA_MON_MAX + 1] = {};
> +
> +     mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info);
> +     if (!info[TIPC_NLA_MON])
> +             return MNL_CB_ERROR;
> +
> +     mnl_attr_parse_nested(info[TIPC_NLA_MON], parse_attrs, attrs);
> +
> +     printf("\nbearer %s\n",
> +             mnl_attr_get_str(attrs[TIPC_NLA_MON_BEARER_NAME]));
> +
> +     printf("    table %u\n    members %u\n    state %s\n",
> +             mnl_attr_get_u32(attrs[TIPC_NLA_MON_LISTGEN]),
> +             mnl_attr_get_u32(attrs[TIPC_NLA_MON_PEERCNT]),
> +             attrs[TIPC_NLA_MON_ACTIVE] ? "active" : "inactive");
> +
> +     return MNL_CB_OK;
> +}
> +
> +static int cmd_link_mon_summary(struct nlmsghdr *nlh, const struct cmd *cmd,
> +                             struct cmdl *cmdl, void *data)
> +{
> +     char buf[MNL_SOCKET_BUFFER_SIZE];
> +
> +     if (help_flag) {
> +             fprintf(stderr, "Usage: %s monitor summary\n", cmdl->argv[0]);
> +             return -EINVAL;
> +     }
> +
> +     if (!(nlh = msg_init(buf, TIPC_NL_MON_GET))) {
> +             fprintf(stderr, "error, message initialisation failed\n");
> +             return -1;
> +     }
> +
> +     return msg_dumpit(nlh, link_mon_summary_cb, NULL);
> +}
> +
>  static void cmd_link_mon_set_help(struct cmdl *cmdl)
>  {
>       fprintf(stderr, "Usage: %s monitor set PPROPERTY\n\n"
> @@ -592,7 +633,8 @@ static void cmd_link_mon_help(struct cmdl *cmdl)
>               "Usage: %s montior COMMAND [ARGS] ...\n\n"
>               "COMMANDS\n"
>               " set                   - Set monitor properties\n"
> -             " get                   - Get monitor properties\n",
> +             " get                   - Get monitor properties\n"
> +             " summary               - Show local node monitor summary\n",
>               cmdl->argv[0]);
>  }
> 
> @@ -602,6 +644,7 @@ static int cmd_link_mon(struct nlmsghdr *nlh, const struct
> cmd *cmd, struct cmdl
>       const struct cmd cmds[] = {
>               { "set",        cmd_link_mon_set,       cmd_link_mon_set_help },
>               { "get",        cmd_link_mon_get,       cmd_link_mon_get_help },
> +             { "summary",    cmd_link_mon_summary,   NULL },
>               { NULL }
>       };
> 
> --
> 2.1.4


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to