Vendor Class Identifier option is common to BOOTP and DHCP and
can be useful without PXE. So send VCI in both BOOTP and DHCP
requests if CONFIG_BOOTP_VCI_STRING is defined.

Signed-off-by: Ilya Yanok <ilya.ya...@cogentembedded.com>
---

 net/bootp.c |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/net/bootp.c b/net/bootp.c
index 0f0867b..a68f914 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -339,6 +339,14 @@ BootpTimeout(void)
        }
 }
 
+#define put_vci(e, str)                                \
+       do {                                    \
+               *e++ = 60;                      \
+               *e++ = sizeof(str);             \
+               memcpy(e, str, sizeof(str));    \
+               e += sizeof(str);               \
+       } while (0)
+
 /*
  *     Initialize BOOTP extension fields in the request.
  */
@@ -435,12 +443,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_VCI_STRING);
 #endif
 
 #if defined(CONFIG_BOOTP_VENDOREX)
@@ -527,6 +533,10 @@ static int BootpExtended(u8 *e)
        *e++ = (576 - 312 + OPT_FIELD_SIZE) & 0xff;
 #endif
 
+#ifdef CONFIG_BOOTP_VCI_STRING
+       put_vci(e, CONFIG_VCI_STRING);
+#endif
+
 #if defined(CONFIG_BOOTP_SUBNETMASK)
        *e++ = 1;               /* Subnet mask request */
        *e++ = 4;
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to