]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - devlink/devlink.c
devlink: Add fflush() in cmd_mon_show_cb()
[mirror_iproute2.git] / devlink / devlink.c
index 7dbe9c7e07a8e5a1f012f9951f3dab92a180aa75..007677a5c5648c6fc98fcfd2d616e1732318ba51 100644 (file)
@@ -35,7 +35,7 @@
 #include <sys/types.h>
 #include <rt_names.h>
 
-#include "SNAPSHOT.h"
+#include "version.h"
 #include "list.h"
 #include "mnlg.h"
 #include "json_print.h"
@@ -581,6 +581,8 @@ static const enum mnl_attr_data_type devlink_policy[DEVLINK_ATTR_MAX + 1] = {
        [DEVLINK_ATTR_PORT_NETDEV_IFINDEX] = MNL_TYPE_U32,
        [DEVLINK_ATTR_PORT_NETDEV_NAME] = MNL_TYPE_NUL_STRING,
        [DEVLINK_ATTR_PORT_IBDEV_NAME] = MNL_TYPE_NUL_STRING,
+       [DEVLINK_ATTR_PORT_LANES] = MNL_TYPE_U32,
+       [DEVLINK_ATTR_PORT_SPLITTABLE] = MNL_TYPE_U8,
        [DEVLINK_ATTR_SB_INDEX] = MNL_TYPE_U32,
        [DEVLINK_ATTR_SB_SIZE] = MNL_TYPE_U32,
        [DEVLINK_ATTR_SB_INGRESS_POOL_COUNT] = MNL_TYPE_U16,
@@ -648,6 +650,7 @@ static const enum mnl_attr_data_type devlink_policy[DEVLINK_ATTR_MAX + 1] = {
        [DEVLINK_ATTR_REGION_CHUNK_LEN] = MNL_TYPE_U64,
        [DEVLINK_ATTR_INFO_DRIVER_NAME] = MNL_TYPE_STRING,
        [DEVLINK_ATTR_INFO_SERIAL_NUMBER] = MNL_TYPE_STRING,
+       [DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER] = MNL_TYPE_STRING,
        [DEVLINK_ATTR_INFO_VERSION_FIXED] = MNL_TYPE_NESTED,
        [DEVLINK_ATTR_INFO_VERSION_RUNNING] = MNL_TYPE_NESTED,
        [DEVLINK_ATTR_INFO_VERSION_STORED] = MNL_TYPE_NESTED,
@@ -2979,6 +2982,16 @@ static void pr_out_info(struct dl *dl, const struct nlmsghdr *nlh,
                print_string(PRINT_ANY, "serial_number", "serial_number %s",
                             mnl_attr_get_str(nla_sn));
        }
+
+       if (tb[DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER]) {
+               struct nlattr *nla_bsn = tb[DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER];
+
+               if (!dl->json_output)
+                       __pr_out_newline();
+               check_indent_newline(dl);
+               print_string(PRINT_ANY, "board.serial_number", "board.serial_number %s",
+                            mnl_attr_get_str(nla_bsn));
+       }
        __pr_out_indent_dec();
 
        if (has_versions) {
@@ -3014,6 +3027,7 @@ static int cmd_versions_show_cb(const struct nlmsghdr *nlh, void *data)
                tb[DEVLINK_ATTR_INFO_VERSION_STORED];
        has_info = tb[DEVLINK_ATTR_INFO_DRIVER_NAME] ||
                tb[DEVLINK_ATTR_INFO_SERIAL_NUMBER] ||
+               tb[DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER] ||
                has_versions;
 
        if (has_info)
@@ -3423,6 +3437,13 @@ static void pr_out_port(struct dl *dl, struct nlattr **tb)
        if (tb[DEVLINK_ATTR_PORT_SPLIT_GROUP])
                print_uint(PRINT_ANY, "split_group", " split_group %u",
                           mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_SPLIT_GROUP]));
+       if (tb[DEVLINK_ATTR_PORT_SPLITTABLE])
+               print_bool(PRINT_ANY, "splittable", " splittable %s",
+                          mnl_attr_get_u8(tb[DEVLINK_ATTR_PORT_SPLITTABLE]));
+       if (tb[DEVLINK_ATTR_PORT_LANES])
+               print_uint(PRINT_ANY, "lanes", " lanes %u",
+                          mnl_attr_get_u32(tb[DEVLINK_ATTR_PORT_LANES]));
+
        pr_out_port_function(dl, tb);
        pr_out_port_handle_end(dl);
 }
@@ -4633,6 +4654,7 @@ static int cmd_mon_show_cb(const struct nlmsghdr *nlh, void *data)
                pr_out_trap_policer(dl, tb, false);
                break;
        }
+       fflush(stdout);
        return MNL_CB_OK;
 }
 
@@ -7794,7 +7816,7 @@ int main(int argc, char **argv)
 
                switch (opt) {
                case 'V':
-                       printf("devlink utility, iproute2-ss%s\n", SNAPSHOT);
+                       printf("devlink utility, iproute2-%s\n", version);
                        ret = EXIT_SUCCESS;
                        goto dl_free;
                case 'f':