diff --git a/net/bootp.c b/net/bootp.c
index 661e371063ac6273d0f3302ca0d85f12e1c4a1dd..ccf9ee66758492c112595ee7d93c1066eea8b4a0 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -341,6 +341,15 @@ BootpTimeout(void)
 	}
 }
 
+#define put_vci(e, str)						\
+	do {							\
+		size_t vci_strlen = strlen(str);		\
+		*e++ = 60;	/* Vendor Class Identifier */	\
+		*e++ = vci_strlen;				\
+		memcpy(e, str, vci_strlen);			\
+		e += vci_strlen;				\
+	} while (0)
+
 /*
  *	Initialize BOOTP extension fields in the request.
  */
@@ -352,7 +361,6 @@ static int DhcpExtended(u8 *e, int message_type, IPaddr_t ServerID,
 	u8 *cnt;
 #if defined(CONFIG_BOOTP_PXE)
 	char *uuid;
-	size_t vci_strlen;
 	u16 clientarch;
 #endif
 
@@ -437,12 +445,10 @@ static int DhcpExtended(u8 *e, int message_type, IPaddr_t ServerID,
 			printf("Invalid pxeuuid: %s\n", uuid);
 		}
 	}
+#endif
 
-	*e++ = 60;	/* Vendor Class Identifier */
-	vci_strlen = strlen(CONFIG_BOOTP_VCI_STRING);
-	*e++ = vci_strlen;
-	memcpy(e, CONFIG_BOOTP_VCI_STRING, vci_strlen);
-	e += vci_strlen;
+#ifdef CONFIG_BOOTP_VCI_STRING
+	put_vci(e, CONFIG_BOOTP_VCI_STRING);
 #endif
 
 #if defined(CONFIG_BOOTP_VENDOREX)
@@ -529,6 +535,10 @@ static int BootpExtended(u8 *e)
 	*e++ = (576 - 312 + OPT_FIELD_SIZE) & 0xff;
 #endif
 
+#ifdef CONFIG_BOOTP_VCI_STRING
+	put_vci(e, CONFIG_BOOTP_VCI_STRING);
+#endif
+
 #if defined(CONFIG_BOOTP_SUBNETMASK)
 	*e++ = 1;		/* Subnet mask request */
 	*e++ = 4;