]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
Merge branch 'master' into next
authorDavid Ahern <dsahern@gmail.com>
Fri, 28 Feb 2020 22:42:49 +0000 (22:42 +0000)
committerDavid Ahern <dsahern@gmail.com>
Fri, 28 Feb 2020 22:42:49 +0000 (22:42 +0000)
Signed-off-by: David Ahern <dsahern@gmail.com>
devlink/devlink.c
man/man8/devlink-monitor.8

index f9e58c1d73947c117052c937df6f0a0d790d0197..6e2115b6c544ef12e6989fd086346230ae5963c9 100644 (file)
@@ -4130,6 +4130,7 @@ static const char *cmd_name(uint8_t cmd)
        case DEVLINK_CMD_FLASH_UPDATE: return "begin";
        case DEVLINK_CMD_FLASH_UPDATE_END: return "end";
        case DEVLINK_CMD_FLASH_UPDATE_STATUS: return "status";
+       case DEVLINK_CMD_HEALTH_REPORTER_RECOVER: return "status";
        case DEVLINK_CMD_TRAP_GET: return "get";
        case DEVLINK_CMD_TRAP_SET: return "set";
        case DEVLINK_CMD_TRAP_NEW: return "new";
@@ -4170,6 +4171,8 @@ static const char *cmd_obj(uint8_t cmd)
        case DEVLINK_CMD_FLASH_UPDATE_END:
        case DEVLINK_CMD_FLASH_UPDATE_STATUS:
                return "flash";
+       case DEVLINK_CMD_HEALTH_REPORTER_RECOVER:
+               return "health";
        case DEVLINK_CMD_TRAP_GET:
        case DEVLINK_CMD_TRAP_SET:
        case DEVLINK_CMD_TRAP_NEW:
@@ -4231,6 +4234,7 @@ static void pr_out_flash_update(struct dl *dl, struct nlattr **tb)
 }
 
 static void pr_out_region(struct dl *dl, struct nlattr **tb);
+static void pr_out_health(struct dl *dl, struct nlattr **tb_health);
 static void pr_out_trap(struct dl *dl, struct nlattr **tb, bool array);
 static void pr_out_trap_group(struct dl *dl, struct nlattr **tb, bool array);
 
@@ -4297,6 +4301,14 @@ static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data)
                pr_out_mon_header(genl->cmd);
                pr_out_flash_update(dl, tb);
                break;
+       case DEVLINK_CMD_HEALTH_REPORTER_RECOVER:
+               mnl_attr_parse(nlh, sizeof(*genl), attr_cb, tb);
+               if (!tb[DEVLINK_ATTR_BUS_NAME] || !tb[DEVLINK_ATTR_DEV_NAME] ||
+                   !tb[DEVLINK_ATTR_HEALTH_REPORTER])
+                       return MNL_CB_ERROR;
+               pr_out_mon_header(genl->cmd);
+               pr_out_health(dl, tb);
+               break;
        case DEVLINK_CMD_TRAP_GET: /* fall through */
        case DEVLINK_CMD_TRAP_SET: /* fall through */
        case DEVLINK_CMD_TRAP_NEW: /* fall through */
@@ -4339,6 +4351,7 @@ static int cmd_mon_show(struct dl *dl)
                if (strcmp(cur_obj, "all") != 0 &&
                    strcmp(cur_obj, "dev") != 0 &&
                    strcmp(cur_obj, "port") != 0 &&
+                   strcmp(cur_obj, "health") != 0 &&
                    strcmp(cur_obj, "trap") != 0 &&
                    strcmp(cur_obj, "trap-group") != 0) {
                        pr_err("Unknown object \"%s\"\n", cur_obj);
@@ -4357,7 +4370,7 @@ static int cmd_mon_show(struct dl *dl)
 static void cmd_mon_help(void)
 {
        pr_err("Usage: devlink monitor [ all | OBJECT-LIST ]\n"
-              "where  OBJECT-LIST := { dev | port | trap | trap-group }\n");
+              "where  OBJECT-LIST := { dev | port | health | trap | trap-group }\n");
 }
 
 static int cmd_mon(struct dl *dl)
index fffab3a4ce881c9f7146120453772ab79e3f9611..a96d350f4241a0d9bc288d96e3af7a7bb57eb453 100644 (file)
@@ -21,7 +21,7 @@ command is the first in the command line and then the object list.
 .I OBJECT-LIST
 is the list of object types that we want to monitor.
 It may contain
-.BR dev ", " port ", " trap ", " trap-group .
+.BR dev ", " port ", " health ", " trap ", " trap-group .
 
 .B devlink
 opens Devlink Netlink socket, listens on it and dumps state changes.
@@ -31,6 +31,7 @@ opens Devlink Netlink socket, listens on it and dumps state changes.
 .BR devlink-dev (8),
 .BR devlink-sb (8),
 .BR devlink-port (8),
+.BR devlink-health (8),
 .BR devlink-trap (8),
 .br