From 4015d106d411c65bf22f142660a145a21e2fad9a Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 21 May 2019 17:29:18 +0530 Subject: [PATCH 1/3] networkctl: Display MTU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now the MTU is not displayed. with this patch it's fixed. (networkctl)⚡ % ./networkctl status enp0s31f6 ~/tt/networkctl/build WARNING: systemd-networkd is not running, output will be incomplete. ● 4: enp0s31f6 Link File: /usr/lib/systemd/network/99-default.link Network File: n/a Type: ether State: n/a (unmanaged) Path: pci-0000:00:1f.6 Driver: e1000e Vendor: Intel Corporation Model: Ethernet Connection (2) I219-LM HW Address: 8c:16:45:6c:83:b9 (LCFC(HeFei) Electronics Technology co., ltd) MTU: 1500 --- src/network/networkctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/networkctl.c b/src/network/networkctl.c index d29eb7d0b20..2c6d4c44e1f 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -154,7 +154,7 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns) { memcmp(&info->mac_address, ÐER_ADDR_NULL, sizeof(struct ether_addr)) != 0; info->has_mtu = - sd_netlink_message_read_u32(m, IFLA_MTU, &info->mtu) && + sd_netlink_message_read_u32(m, IFLA_MTU, &info->mtu) >= 0 && info->mtu > 0; return 1; From 61de0c42f3824cf4fc15fe3cb338c9d172b9aa25 Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 21 May 2019 17:43:56 +0530 Subject: [PATCH 2/3] sd-netlink: Add netlink property IFLA_MIN_MTU and IFLA_MAX_MTU, --- src/libsystemd/sd-netlink/netlink-types.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c index 0a6bd330025..7fd3efbd357 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -560,6 +560,8 @@ static const NLType rtnl_link_types[] = { /* [IFLA_PHYS_PORT_ID] = { .type = NETLINK_TYPE_BINARY, .len = MAX_PHYS_PORT_ID_LEN }, */ + [IFLA_MIN_MTU] = { .type = NETLINK_TYPE_U32 }, + [IFLA_MAX_MTU] = { .type = NETLINK_TYPE_U32 }, }; static const NLTypeSystem rtnl_link_type_system = { From 2c73f59b81bc520e16754ef1a71abf9dbe950219 Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 21 May 2019 17:44:36 +0530 Subject: [PATCH 3/3] networkctl: Add support to display min and max MTU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (networkctl)⚡ % ./networkctl status enp0s31f6 ~/tt/networkctl/build ● 4: enp0s31f6 Link File: /usr/lib/systemd/network/99-default.link Network File: n/a Type: ether State: n/a (unmanaged) Path: pci-0000:00:1f.6 Driver: e1000e Vendor: Intel Corporation Model: Ethernet Connection (2) I219-LM HW Address: 8c:16:45:6c:83:b9 (LCFC(HeFei) Electronics Technology co., ltd) MTU: 1500 Minimum MTU: 68 Maximum MTU: 9000 --- src/network/networkctl.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 2c6d4c44e1f..ddc5c49e25e 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -101,9 +101,13 @@ typedef struct LinkInfo { unsigned short iftype; struct ether_addr mac_address; uint32_t mtu; + uint32_t min_mtu; + uint32_t max_mtu; bool has_mac_address:1; bool has_mtu:1; + bool has_min_mtu:1; + bool has_max_mtu:1; } LinkInfo; static int link_info_compare(const LinkInfo *a, const LinkInfo *b) { @@ -157,6 +161,14 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns) { sd_netlink_message_read_u32(m, IFLA_MTU, &info->mtu) >= 0 && info->mtu > 0; + info->has_min_mtu = + sd_netlink_message_read_u32(m, IFLA_MIN_MTU, &info->min_mtu) >= 0 && + info->min_mtu > 0; + + info->has_max_mtu = + sd_netlink_message_read_u32(m, IFLA_MAX_MTU, &info->max_mtu) >= 0 && + info->min_mtu > 0; + return 1; } @@ -779,6 +791,10 @@ static int link_status_one( if (info->has_mtu) printf(" MTU: %" PRIu32 "\n", info->mtu); + if (info->has_min_mtu) + printf(" Minimum MTU: %" PRIu32 "\n", info->min_mtu); + if (info->has_max_mtu) + printf(" Maximum MTU: %" PRIu32 "\n", info->max_mtu); (void) dump_addresses(rtnl, " Address: ", info->ifindex); (void) dump_gateways(rtnl, hwdb, " Gateway: ", info->ifindex);