udhcpc: add comment about server IP
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 20 Oct 2011 12:47:41 +0000 (14:47 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 20 Oct 2011 12:47:41 +0000 (14:47 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/udhcp/dhcpc.c

index 36c8a3dd3e06014fc9cadf7cb35ed8bd390c842e..7cd0b7bcb65bb757374e2446c38f2f1fb827a35e 100644 (file)
@@ -1533,7 +1533,25 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
                case INIT_SELECTING:
                        /* Must be a DHCPOFFER to one of our xid's */
                        if (*message == DHCPOFFER) {
-               /* TODO: why we don't just fetch server's IP from IP header? */
+/* What exactly is server's IP? There are several values.
+ * Example DHCP offer captured with tchdump:
+ *
+ * 10.34.25.254:67 > 10.34.25.202:68 // IP header's src
+ * BOOTP fields:
+ * Your-IP 10.34.25.202
+ * Server-IP 10.34.32.125   // "next server" IP
+ * Gateway-IP 10.34.25.254  // relay's address (if DHCP relays are in use)
+ * DHCP options:
+ * DHCP-Message Option 53, length 1: Offer
+ * Server-ID Option 54, length 4: 10.34.255.7       // "server ID"
+ * Default-Gateway Option 3, length 4: 10.34.25.254 // router
+ *
+ * We think that real server IP (one to use in renew/release)
+ * is one in Server-ID option. But I am not 100% sure.
+ * IP header's src and Gateway-IP (same in this exaqmple)
+ * might work too.
+ * "Next server" and router are definitely wrong ones to use, though...
+ */
                                temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
                                if (!temp) {
                                        bb_error_msg("no server ID, ignoring packet");