Merge pull request #60 from anoo1/mac

Add Set MAC address
diff --git a/transporthandler.C b/transporthandler.C
index dac8fe8..c38adea 100644
--- a/transporthandler.C
+++ b/transporthandler.C
@@ -14,6 +14,7 @@
 #endif
 
 // OpenBMC System Manager dbus framework
+extern sd_bus *bus;
 const char  *app   =  "org.openbmc.NetworkManager";
 const char  *obj   =  "/org/openbmc/NetworkManager/Interface";
 const char  *ifc   =  "org.openbmc.NetworkManager";
@@ -64,6 +65,37 @@
     {
         sprintf(new_ipaddr, "%d.%d.%d.%d", reqptr->data[0], reqptr->data[1], reqptr->data[2], reqptr->data[3]);
     }
+    else if (reqptr->parameter == 5) // MAC
+    {
+        char                mac[18];
+        sd_bus_message *reply = NULL, *m = NULL;
+        sd_bus_error error = SD_BUS_ERROR_NULL;
+        int r = 0;
+
+        sprintf(mac, "%x:%x:%x:%x:%x:%x",
+                reqptr->data[0],
+                reqptr->data[1],
+                reqptr->data[2],
+                reqptr->data[3],
+                reqptr->data[4],
+                reqptr->data[5]);
+
+        r = sd_bus_message_new_method_call(bus,&m,app,obj,ifc,"SetHwAddress");
+        if (r < 0) {
+            fprintf(stderr, "Failed to add method object: %s\n", strerror(-r));
+            return -1;
+        }
+        r = sd_bus_message_append(m, "s", mac);
+        if (r < 0) {
+            fprintf(stderr, "Failed to append message data: %s\n", strerror(-r));
+            return -1;
+        }
+        r = sd_bus_call(bus, m, 0, &error, &reply);
+        if (r < 0) {
+            fprintf(stderr, "Failed to call method: %s\n", strerror(-r));
+            return -1;
+        }
+    }
     else if (reqptr->parameter == 6) // Subnet
     {
         sprintf(new_netmask, "%d.%d.%d.%d", reqptr->data[0], reqptr->data[1], reqptr->data[2], reqptr->data[3]);