Browse Source

Link::write_yaml: hide hwaddr / broadcast if unspecified

Fabian Peter Hammerle 7 years ago
parent
commit
e25700c353
2 changed files with 19 additions and 6 deletions
  1. 9 0
      hardware_address.h
  2. 10 6
      link.cpp

+ 9 - 0
hardware_address.h

@@ -24,6 +24,15 @@ public:
     return *this;
   }
 
+  bool specified() const {
+    for (unsigned char i = 0; i < IFHWADDRLEN; i++) {
+      if (bytes[i] != 0x00) {
+        return true;
+      }
+    }
+    return false;
+  }
+
   std::string format() const {
     std::stringstream ss;
     ss << std::hex << std::setfill('0');

+ 10 - 6
link.cpp

@@ -48,12 +48,16 @@ void Link::write_yaml(std::ostream &stream,
   const std::string indent(indent_level, ' ');
   stream << "ifname: " + ifname + "\n";
   // stream << indent << "index: " << index << "\n";
-  stream << indent << "address: ";
-  address.write_yaml(stream);
-  stream << "\n";
-  stream << indent << "broadcast: ";
-  broadcast.write_yaml(stream);
-  stream << "\n";
+  if (address.specified()) {
+    stream << indent << "address: ";
+    address.write_yaml(stream);
+    stream << "\n";
+  }
+  if (broadcast.specified()) {
+    stream << indent << "broadcast: ";
+    broadcast.write_yaml(stream);
+    stream << "\n";
+  }
   stream << indent << "mtu: " << mtu << "\n";
   stream << indent << "operstate: ";
   operstate.write_yaml(stream);