Browse Source

added attr 'mtu'

Fabian Peter Hammerle 7 years ago
parent
commit
22560a58b0
3 changed files with 13 additions and 3 deletions
  1. 3 0
      README.md
  2. 9 3
      link.cpp
  3. 1 0
      link.h

+ 3 - 0
README.md

@@ -16,14 +16,17 @@ $ ipyml
 - ifname: lo
   address: 00:00:00:00:00:00
   broadcast: 00:00:00:00:00:00
+  mtu: 65536
   operstate: unknown
 - ifname: eth0
   address: 11:22:33:44:55:66
   broadcast: ff:ff:ff:ff:ff:ff
+  mtu: 1500
   operstate: down
 - ifname: wlan0
   address: 77:88:99:00:aa:bb
   broadcast: ff:ff:ff:ff:ff:ff
+  mtu: 1500
   operstate: up
 
 ```

+ 9 - 3
link.cpp

@@ -8,6 +8,7 @@
 
 int Link::mnl_attr_cb(const nlattr *attr, void *data) {
   Link *link = (Link *)data;
+  // /usr/include/linux/if_link.h
   switch (mnl_attr_get_type(attr)) {
   case IFLA_ADDRESS:
     link->address = attr;
@@ -18,6 +19,10 @@ int Link::mnl_attr_cb(const nlattr *attr, void *data) {
   case IFLA_IFNAME:
     link->ifname = mnl_attr_get_str(attr);
     break;
+  case IFLA_MTU:
+    assert(mnl_attr_get_payload_len(attr) == 4);
+    link->mtu = mnl_attr_get_u32(attr);
+    break;
   case IFLA_OPERSTATE:
     link->operstate = attr;
     break;
@@ -29,12 +34,13 @@ void Link::write_yaml(std::ostream &stream,
                       const yaml_indent_level_t indent_level) const {
   const std::string indent(indent_level, ' ');
   stream << "ifname: " + ifname + "\n";
-  stream << indent + "address: ";
+  stream << indent << "address: ";
   address.write_yaml(stream);
   stream << "\n";
-  stream << indent + "broadcast: ";
+  stream << indent << "broadcast: ";
   broadcast.write_yaml(stream);
   stream << "\n";
-  stream << indent + "operstate: ";
+  stream << indent << "mtu: " << mtu << "\n";
+  stream << indent << "operstate: ";
   operstate.write_yaml(stream);
 }

+ 1 - 0
link.h

@@ -12,6 +12,7 @@
 class Link : public YamlObject {
   std::string ifname;
   HardwareAddress address, broadcast;
+  unsigned long int mtu;
   OperState operstate;
 
 public: