Index: uspace/srv/net/dhcp/dhcp.c
===================================================================
--- uspace/srv/net/dhcp/dhcp.c	(revision 695b6ff32cdb5ebb7fa100f5cba53b124a106990)
+++ uspace/srv/net/dhcp/dhcp.c	(revision 947e2ef52b4d89628cb7e4dc1fec8ca166910b10)
@@ -53,5 +53,5 @@
 
 static int transport_fd = -1;
-static addr48_t mac_addr;
+static inet_link_info_t link_info;
 static uint8_t msgbuf[MAX_MSG_SIZE];
 
@@ -132,5 +132,5 @@
 	hdr->flags = flag_broadcast;
 
-	addr48(mac_addr, hdr->chaddr);
+	addr48(link_info.mac_addr, hdr->chaddr);
 	hdr->opt_magic = host2uint32_t_be(dhcp_opt_magic);
 
@@ -178,5 +178,5 @@
 	hdr->flags = flag_broadcast;
 	hdr->ciaddr = host2uint32_t_be(offer->oaddr.addr);
-	addr48(mac_addr, hdr->chaddr);
+	addr48(link_info.mac_addr, hdr->chaddr);
 	hdr->opt_magic = host2uint32_t_be(dhcp_opt_magic);
 
@@ -387,5 +387,5 @@
 		rc = dnsr_set_srvaddr(&offer->dns_server);
 		if (rc != EOK) {
-			printf("%s: Failed setting nameserver address (%d))\n",
+			printf("%s: Error setting nameserver address (%d))\n",
 			    NAME, rc);
 			return rc;
@@ -413,5 +413,5 @@
 	rc = inetcfg_init();
 	if (rc != EOK) {
-		printf("Failed contacting inet configuration service.\n");
+		printf("Error contacting inet configuration service.\n");
 		return 1;
 	}
@@ -419,15 +419,14 @@
 	rc = loc_service_get_id(argv[1], &iplink, 0);
 	if (rc != EOK) {
-		printf("Failed resolving service '%s'.\n", argv[1]);
-		return 1;
-	}
-
-	/* XXX Determine MAC address automatically */
-	mac_addr[0] = 0xaa;
-	mac_addr[1] = 0xde;
-	mac_addr[2] = 0xad;
-	mac_addr[3] = 0xbe;
-	mac_addr[4] = 0xef;
-	mac_addr[5] = 0xfe;
+		printf("Error resolving service '%s'.\n", argv[1]);
+		return 1;
+	}
+
+	/* Get link hardware address */
+	rc = inetcfg_link_get(iplink, &link_info);
+	if (rc != EOK) {
+		printf("Error getting properties for link '%s'.\n", argv[1]);
+		return 1;
+	}
 
 	laddr.sin_family = AF_INET;
